### Description

Add a sensor for AWS Batch jobs that will poll the job until it reaches a terminal state. 

### Use case/motivation

This feature will enable DAGs to track the status of batch jobs that are submitted in an upstream task that doesn't use the BatchOperator. An example use case - The batch job is submitted by an upstream PythonOperator, with its own functional logic, that returns the job_id of the submitted job.

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

airflow/providers/amazon/aws/hooks/batch_client.py
self,
        jobName: str,
        jobQueue: str,
        jobDefinition: str,
        arrayProperties: Dict,
        parameters: Dict,
        containerOverrides: Dict,
        tags: Dict,
    ) -> Dict:
        """
        Submit a batch job
        :param jobName: the name for the AWS batch job
        :type jobName: str
        :param jobQueue: the queue name on AWS Batch
        :type jobQueue: str
        :param jobDefinition: the job definition name on AWS Batch
        :type jobDefinition: str
        :param arrayProperties: the same parameter that boto3 will receive
        :type arrayProperties: Dict
        :param parameters: the same parameter that boto3 will receive
        :type parameters: Dict
        :param containerOverrides: the same parameter that boto3 will receive
        :type containerOverrides: Dict
        :param tags: the same parameter that boto3 will receive
        :type tags: Dict
        :return: an API response
        :rtype: Dict
        """
        ...
    def terminate_job(self, jobId: str, reason: str) -> Dict: