### 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
job_id,
                retries,
                self.max_retries,
                pause,
            )
            self.delay(pause)
    def get_job_description(self, job_id: str) -> Dict:
        """
        Get job description (using status_retries).
        :param job_id: a batch job ID
        :type job_id: str
        :return: an API response for describe jobs
        :rtype: Dict
        :raises: AirflowException
        """
        retries = 0
        while True:
            try:
                response = self.get_conn().describe_jobs(jobs=[job_id])
                return self.parse_job_description(job_id, response)
            except botocore.exceptions.ClientError as err:
                error = err.response.get("Error", {})
                if error.get("Code") == "TooManyRequestsException":
                    pass  
                else:
                    raise AirflowException(f"AWS Batch job ({job_id}) description error: {err}")
            retries += 1
            if retries >= self.status_retries:
                raise AirflowException(
                    f"AWS Batch job ({job_id}) description error: exceeded status_retries "