### 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
"""
        Poll for job status using an exponential back-off strategy (with max_retries).
        :param job_id: a batch job ID
        :type job_id: str
        :param match_status: a list of job status to match; the batch job status are:
            'SUBMITTED'|'PENDING'|'RUNNABLE'|'STARTING'|'RUNNING'|'SUCCEEDED'|'FAILED'
        :type match_status: List[str]
        :rtype: bool
        :raises: AirflowException
        """
        retries = 0
        while True:
            job = self.get_job_description(job_id)
            job_status = job.get("status")
            self.log.info(
                "AWS Batch job (%s) check status (%s) in %s",
                job_id,
                job_status,
                match_status,
            )
            if job_status in match_status:
                return True
            if retries >= self.max_retries:
                raise AirflowException(f"AWS Batch job ({job_id}) status checks exceed max_retries")
            retries += 1
            pause = self.exponential_delay(retries)
            self.log.info(
                "AWS Batch job (%s) status check (%d of %d) in the next %.2f seconds",