Conformer local attention
Signed-off-by: Samuel Kriman <samuelkriman@gmail.com>

# What does this PR do ?

This PR introduces the option of using local attention in Conformer with relative positional encoding, following the approach from Longformer (https://arxiv.org/abs/2004.05150), based on Ankur Kumar's branch https://github.com/iankur/NeMo/tree/longformer_rel_pos. This is useful for running on long audio files, as it can be done faster than with buffered inference. It may also improve performance on audio with long segments of noise that may confuse models with full attention.

This method can be used with checkpoints trained with regular attention. For example, Conformer-Large checkpoints (such as https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_conformer_ctc_large and https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/stt_en_conformer_transducer_large) can be run on ~30 minute audio files on a single 32GB GPU after switching to local attention. The duration can be further increased to ~2 hours by switching to stacking subsampling (this won't work without additional training). Please note that the WER may increase slightly on our main evaluation sets when using small context local attention with models trained with full context (see table below for some WER(%) comparisons). This effect can be mitigated by either increasing the context size or fine-tuning the model using local attention.

| Model | LS test-other | LS test-clean | People Speech | SLR |
|----------|----------|----------|----------|----------|
| Conformer-Large-CTC   | 4.53   | 2.19   | 23.04   | 5.94   |
| Conformer-Large-CTC with local attention (64, 64)  | 5.39   | 2.57   | 23.89   | 6.2  |
| Conformer-Large-CTC with local attention (192, 192)  | 4.53   |  2.19 | 23.2   | 5.96  |
| Conformer-Large-RNNT  | 3.73  | 1.8  | 21.69  | 5.4  |
| Conformer-Large-RNNT with local attention (64, 64) | 4.6  | 2.14  | 21.85  | 5.67  |
| Conformer-Large-RNNT with local attention (192, 192) | 3.75  | 1.83 | 21.64  | 5.41 |


**Collection**: ASR

# Changelog 
- adds option to use local attention for Conformer
- adds option for overriding attention parameters when running transcribe or eval scripts, or after loading model

# Usage

With an eval script can be used like this to switch to local attention with any Conformer checkpoint

```
python speech_to_text_eval.py \
  (...other params...)  \
  ++model_change.conformer.self_attention_model="rel_pos_local_attn" \
  ++model_change.conformer.att_context_size=[64, 64]
```

Or after loading model 

```python
asr_model = ASRModel.from_pretrained('stt_en_conformer_ctc_large')
asr_model.change_attention_model(
                self_attention_model="rel_pos_local_attn",
                att_context_size=[64, 64]
)
```

**PR Type**:
- [x] New Feature
- [ ] Bugfix
- [x] Documentation
