**Description**

We would like to be able to load data to **existing** BigQuery tables without having to specify schema_fields/schema_object in `GCSToBigQueryOperator` since table already exists.

**Use case / motivation**
<details>
  <summary>BigQuery load job usage details and problem explanation</summary>
  
We create BigQuery tables/datasets through CI process (terraform managed), with the help of Airflow we updating those tables with data.
To update tables with data we can use:
Airflow 2.0 operator: GCSToBigQueryOperator
Airflow 1.* operator (deprecated) GoogleCloudStorageToBigQueryOperator 
However those operator require to specify one of 3 things:
1. schema_fields - fields that define table schema
2. schema_object -  a GCS object path pointing to a .json file that contains the schema for the table
3. or autodetect=True
In other cases it will:
```
 raise ValueError('At least one of `schema_fields`, `schema_object`, '
                                 'or `autodetect**=True**` must be passed.')  
```
_Note: it does not actually says that `autodetect` must be `True` in exception - but according to code it must be specified as True, or schema should be used otherwise._

But we already have created table, and we can update it using 
`bq load` command. (which Airflow operators mentioned above are using internally)

When using `bq load` - you also have an option to specify **schema**. The schema can be a local JSON file, or it can be typed inline as part of the command. You can also use the `--autodetect` flag instead of supplying a schema definition.
https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-csv#bq

When you specify `--autodetect` as True - BigQuery will try to give random names to your columns, e.g.: 'string_field_0', 'int_field_1' - and if you are trying to load into **existing** table - `bq load` will fail with error:
'Cannot add fields (field: string_field_0)'}.'
Same way Airflow operators like 'GCSToBigQueryOperator' will fail.


However **there is also an option NOT to specify** `--autodetect` or specify `--autodetect=False` and in this case `bq load` will load from CloudStorage to **existing** BQ table without problems.
</details>


Proposal/TL;DR: 
Add an option **not** to specify `--autodetect` or specify `--autodetect=False` when  write_disposition='WRITE_APPEND' is used in GCSToBigQueryOperator. This will allow an operator to update **existing** BigQuery table without having to specify schema within the operator itself (it will just be updating **existing** table with data).


invalid error is returned in the job result. Only applicable to CSV, ignored
        for other formats.
    :param encoding: The character encoding of the data. See:
        https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.query.tableDefinitions.(key).csvOptions.encoding
        https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#externalDataConfiguration.csvOptions.encoding
    :param max_id_key: If set, the name of a column in the BigQuery table
        that's to be loaded. This will be used to select the MAX value from
        BigQuery after the load occurs. The results will be returned by the
        execute() command, which in turn gets stored in XCom for future
        operators to use. This can be helpful with incremental loads--during
        future executions, you can pick up from the max ID.
    :param delegate_to: The account to impersonate using domain-wide delegation of authority,
        if any. For this to work, the service account making the request must have
        domain-wide delegation enabled.
    :param schema_update_options: Allows the schema of the destination
        table to be updated as a side effect of the load job.
    :param src_fmt_configs: configure optional fields specific to the source format
    :param external_table: Flag to specify if the destination table should be
        a BigQuery external table. Default Value is False.
    :param time_partitioning: configure optional time partitioning fields i.e.
        partition by field, type and  expiration as per API specifications.
        Note that 'field' is not available in concurrency with
        dataset.table$partition.
    :param cluster_fields: Request that the result of this load be stored sorted
        by one or more columns. BigQuery supports clustering for both partitioned and
        non-partitioned tables. The order of columns given determines the sort order.
        Not applicable for external tables.
    :param autodetect: [Optional] Indicates if we should automatically infer the
        options and schema for CSV and JSON sources. (Default: ``True``).
        Parameter must be set to True if 'schema_fields' and 'schema_object' are undefined.