Runs a query and returns a table in a DataSet either passed in or by creating a new one.