### Description

Add Databricks Cluster API in Databricks Hook


### Use case/motivation

Databricks provider lacks [Cluster API](https://docs.databricks.com/dev-tools/api/latest/clusters.html) access to allow
to CRUD cluster as well as manage clusters (start/restart/delete/...)
Those API are very convenient to control clusters (get status, force shutdown...) and to optimize some specific flows (scale cluster in advance when a coming need is detected )

### Related issues

none

### 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)

if not isinstance(other, RunState):
            return NotImplemented
        return (
            self.life_cycle_state == other.life_cycle_state
            and self.result_state == other.result_state
            and self.state_message == other.state_message
        )
    def __repr__(self) -> str:
        return str(self.__dict__)
    def to_json(self) -> str:
        return json.dumps(self.__dict__)
    @classmethod
    def from_json(cls, data: str) -> RunState:
        return RunState(**json.loads(data))
class DatabricksHook(BaseDatabricksHook):
    """
    Interact with Databricks.
    :param databricks_conn_id: Reference to the :ref:`Databricks connection <howto/connection:databricks>`.
    :param timeout_seconds: The amount of time in seconds the requests library
        will wait before timing-out.
    :param retry_limit: The number of times to retry the connection in case of
        service outages.
    :param retry_delay: The number of seconds to wait between retries (it
        might be a floating point number).
    :param retry_args: An optional dictionary with arguments passed to ``tenacity.Retrying`` class.
    """
    hook_name = "Databricks"
    def __init__(