Add support for Numba FP16 RNNT Loss (#6991)
Cherry pick RNNT FP 16 Compat to NeMo 1.20

Signed-off-by: smajumdar <titu1994@gmail.com>

# What does this PR do ?

Adds Numba FP 16 support to NeMo 1.20

**Collection**: [ASR]

# Usage

## Install dependencies
[Numba](https://github.com/numba/numba) 0.57+ (conda install numba=0.57.1 -c conda-forge)
[CUDA Python](https://nvidia.github.io/cuda-python/install.html)

After that, train RNNT model with trainer.precision=16

```python
# Set environment variables 
# export NUMBA_CUDA_USE_NVIDIA_BINDING=1
# export STRICT_NUMBA_COMPAT_CHECK=0

from nemo.core.utils import numba_utils

print(numba_utils.numba_cuda_is_supported(numba_utils.__NUMBA_MINIMUM_VERSION_FP16_SUPPORTED__))  # Should be true

# Should also be True. 
# You can also pass True as an argument to this function to possibly get a reason as to why FP 16 is not supported.

print(numba_utils.is_numba_cuda_fp16_supported())
```

# Before your PR is "Ready for review"
**Pre checks**:
- [x] Make sure you read and followed [Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md)
- [x] Did you write any new necessary tests?
- [x] Did you add or update any necessary documentation?
- [ ] Does the PR affect components that are optional to install? (Ex: Numba, Pynini, Apex etc)
  - [ ] Reviewer: Does the PR have correct import guards for all optional libraries?
  
**PR Type**:
- [x] New Feature
- [ ] Bugfix
- [ ] Documentation
