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

**What happened**:

`BigQueryInsertJobOperator` tries to start a BigQuery job by specifying a job_id which is a combination of `dag_id`, `task_id`, `execution_date` and an additional `uniqueness_suffix`.

https://github.com/apache/airflow/blob/master/airflow/providers/google/cloud/operators/bigquery.py#L2072

However, because BigQuery only accepts alphanumeric (in additon to dashes and underscore) characters then, if a DagID contains a version number whcih includes a `.` character then this will cause the task to fail.

https://cloud.google.com/bigquery/docs/running-jobs#generate-jobid

**How to reproduce it**:
Create a DAG with the name `my-dag-v1.0`.
airflow/providers/google/cloud/hooks/bigquery.py
:param maximum_bytes_billed: Limits the bytes billed for this job.
            Queries that will have bytes billed beyond this limit will fail
            (without incurring a charge). If unspecified, this will be
            set to your project default.
        :type maximum_bytes_billed: float
        :param create_disposition: Specifies whether the job is allowed to
            create new tables.
        :type create_disposition: str
        :param query_params: a list of dictionary containing query parameter types and
            values, passed to BigQuery
        :type query_params: list
        :param labels: a dictionary containing labels for the job/query,
            passed to BigQuery
        :type labels: dict
        :param schema_update_options: Allows the schema of the destination
            table to be updated as a side effect of the query job.
        :type schema_update_options: Union[list, tuple, set]
        :param priority: Specifies a priority for the query.
            Possible values include INTERACTIVE and BATCH.
            The default value is INTERACTIVE.
        :type priority: str
        :param time_partitioning: configure optional time partitioning fields i.e.
            partition by field, type and expiration as per API specifications.
        :type time_partitioning: dict
        :param cluster_fields: Request that the result of this query be stored sorted
            by one or more columns. This is only available in combination with
            time_partitioning. The order of columns given determines the sort order.
        :type cluster_fields: list[str]
        :param location: The geographic location of the job. Required except for
            US and EU. See details at