[ASR] k2: Epsilon-Transducer and code imprevements
# What does this PR do ?

Introduces Epsilon-Transducer and major k2 code refactoring.

**Collection**: ASR

# Note
This PR is an interim one, meant to keep the k2 core code up to date and preserve some useful prototypes like the Pruned Epsilon-Transducer. The k2-based RNNT code design is subject to upcoming refactoring following the merger of this PR and https://github.com/NVIDIA/NeMo/pull/6168.

# Changelog 
- k2 losses and decoders refactored
- Epsilon-Transducer RNNT variant added
- RNNT greedy and forced algnment added for Epsilon-Transducer
- Pruned Epsilon-Transducer proposed
- CTC and RNNT tests added

# Usage
* RNNT forced alignment: `python ./experimental/k2/align_speech_parallel.py model=stt_en_conformer_transducer_large predict_ds.manifest_filepath=./data/Librispeech/dev_clean.json predict_ds.batch_size=8 output_path=./ali_rnnt model_stride=4 aligner_args.decode_batch_size=2 aligner_args.rnnt_cfg.predictor_window_size=40 aligner_args.rnnt_cfg.predictor_step_size=4`

# Before your PR is "Ready for review"
**Pre checks**:
- [ ] 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?
- [ ] Did you add or update any necessary documentation?
- [x] 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

If you haven't finished some of the above items you can still open "Draft" PR.


## Who can review?

@artbataev
[Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md) contains specific people who can review PRs to various areas.