### Description
Re: Google Cloud Provider -- PubSub

The PubSub [Topics Create API](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics/create#request-body) supports the SchemaSettings and messageRetentionDuration parameters. These should also be supported via the [PubSubCreateTopicOperator](https://github.com/apache/airflow/blob/9207e7d5e5c183d2e63c3030216b14709257668e/airflow/providers/google/cloud/operators/pubsub.py#L50). Thanks!

### Use case/motivation

_No response_

### Related issues

_No response_

### Are you willing to submit a PR?

- [x] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

"""Publish messages to a PubSub topic.
    .. seealso::
        For more information on how to use this operator, take a look at the guide:
        :ref:`howto/operator:PubSubPublishMessageOperator`
    Each Task publishes all provided messages to the same topic
    in a single Google Cloud project. If the topic does not exist, this
    task will fail. ::
        m1 = {'data': b'Hello, World!',
              'attributes': {'type': 'greeting'}
             }
        m2 = {'data': b'Knock, knock'}
        m3 = {'attributes': {'foo': ''}}
        t1 = PubSubPublishMessageOperator(
            project_id='my-project',
            topic='my_topic',
            messages=[m1, m2, m3],
            create_topic=True,
            dag=dag,
        )
    ``project_id``, ``topic``, and ``messages`` are templated so you can use Jinja templating
    in their values.
    :param project_id: Optional, the Google Cloud project ID in which to work (templated).
        If set to None or missing, the default project_id from the Google Cloud connection is used.
    :param topic: the topic to which to publish. Do not include the