Apache Airflow version: 1.10.*
BackPort Packages version: 2020.11.13rc1

What happened:

Although running the `BigQueryGetDataOperator` without specifying `selected_fields` appears to be successful, if you inspect `table_data` returned from `hook.list_rows` then it is just a list of empty sets.

```
[2020-11-11 15:10:30,665] {bigquery.py:483} INFO - Total extracted rows: 253
[(), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()]
[2020-11-11 15:10:30,679] {taskinstance.py:1143} INFO - Marking task as SUCCESS. dag_id=my-test-dag-v1.0, task_id=get-table, execution_date=20201101T000000, start_date=20201111T151030, end_date=20201111T151030
```
Adding some fields to the `selected_fields` argument, does correctly return data however.

```
[2020-11-11 15:13:37,608] {bigquery.py:483} INFO - Total extracted rows: 253
[(None, 'Anonymous Proxy'), (None, 'Satellite Provider'), (None, 'Asia/Pacific Region'), (None, 'European Union'), ('Pacific', 'American Samoa'), ('Pacific', 'Australia'), ('Pacific', 'Cook Islands'), ('Pacific', 'Fiji'), ('Pacific', 'Micronesia, Federated States of'), ('Pacific', 'Guam'), ('Pacific', 'Kiribati'), ('Pacific', 'Marshall Islands'), ('Pacific', 'Northern Mariana Islands'), ('Pacific', 'New Caledonia'), ('Pacific', 'Norfolk Island'), ('Pacific', 'Nauru'),
```

I think the offending code is between this two lines:
https://github.com/apache/airflow/blob/master/airflow/providers/google/cloud/hooks/bigquery.py#L1299
https://github.com/apache/airflow/blob/master/airflow/providers/google/cloud/hooks/bigquery.py#L1312

When no fields are submitted, it passes `[]` to the `list_rows` method in the BigQuery client which returns:

```
[Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), Row((), {}), R
```

Changing `hooks.bigquery.py` so that only `None` or a non-empty list is passed will fix the issue.
airflow/providers/google/cloud/hooks/bigquery.py
self, dataset_id: str, table_resource: Dict[str, Any], project_id: Optional[str] = None
    ) -> Dict[str, Any]:
        """
        If the table already exists, update the existing table if not create new.
        Since BigQuery does not natively allow table upserts, this is not an
        atomic operation.
        :param dataset_id: the dataset to upsert the table into.
        :type dataset_id: str
        :param table_resource: a table resource. see
            https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
        :type table_resource: dict
        :param project_id: the project to upsert the table into.  If None,
            project will be self.project_id.
        :return:
        """
        table_id = table_resource['tableReference']['tableId']
        table_resource = self._resolve_table_reference(
            table_resource=table_resource, project_id=project_id, dataset_id=dataset_id, table_id=table_id
        )
        tables_list_resp = self.get_dataset_tables(dataset_id=dataset_id, project_id=project_id)
        if any(table['tableId'] == table_id for table in tables_list_resp):
            self.log.info('Table %s:%s.%s exists, updating.', project_id, dataset_id, table_id)
            table = self.update_table(table_resource=table_resource)
        else:
            self.log.info('Table %s:%s.%s does not exist. creating.', project_id, dataset_id, table_id)
            table = self.create_empty_table(
                table_resource=table_resource, project_id=project_id
            ).to_api_repr()
        return table
    def run_table_delete(self, deletion_dataset_table: str, ignore_if_missing: bool = False) -> None: