Support Alignment Extraction for all RNNT Beam decoding methods
# What does this PR do ?

Adds alignment extraction for all rnnt beam algorithms

**Collection**: [ASR]

# Changelog 
- Adds support for TSD, ALSD and mAES alignment extraction 
- Adds unittest that downloads a small model and runs on AN4 test set to compute alignments from greedy and beam search algorithms

# Usage
You can now submit `preserve_alignments=true` to in the RNNTDecodingConfig for all beam search algos and extract alignments.

```python

import nemo.collections.asr as nemo_asr

filepath = "<audio filepath>"

model = nemo_asr.models.ASRModel.from_pretrained('stt_en_conformer_transducer_large')  # type: nemo_asr.models.EncDecRNNTBPEModel
# Create default decoding config
model.change_decoding_strategy(None)
decoding_cfg = model.cfg.decoding
decoding_cfg.strategy = "beam"  # can be beam, tsd, alsd or maes
decoding_cfg.preserve_alignments = True  # the important argument !
decoding_cfg.beam.beam_size = 8
decoding_cfg.beam.return_best_hypothesis = False

# Prepare beam search decoding strategy
model.change_decoding_strategy(decoding_cfg)

best_hypothesis, all_hypothesis = model.transcribe([filepath], return_hypotheses=True)
print("Num hypothesis per sample :", len(best_hypothesis[0]))
print("Result type :", best_hypothesis[0][0].__class__.__name__)
for candidate in range(len(best_hypothesis[0])):
    print(f"Beam Search {candidate + 1} :", best_hypothesis[0][candidate].text, best_hypothesis[0][candidate].score)

# Use the following commented print statements to check
# the alignment of other algorithms compared to the default
all_hyps = all_hypothesis
for idx, hyp_ in enumerate(all_hyps):  # type: (int, rnnt_utils.Hypothesis)
    print("Hyp index", idx + 1, "text :", hyp_.text)

    for t in range(len(hyp_.alignments)):
        t_u = []
        for u in range(len(hyp_.alignments[t])):
            logp, label = hyp_.alignments[t][u]
            t_u.append(int(label))
        print(f"Tokens at timestep {t} = {t_u}")
    print()

```

# 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

