GPT extrapolatable position embedding (xpos/sandwich/alibi/kerple) and Flash Attention
# What does this PR do ?
* Add extrapolatable position embedding, e.g. xpos, sandwich.
* Fix extrapolatable position embedding, e.g. alibi, kerple. 
* Add flash attention (FA)

**Collection**: [NLP]

# Changelog 
* GPT
  - `examples/nlp/language_modeling/conf/megatron_gpt_config.yaml`
  - `nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py`
  - `nemo/collections/nlp/models/language_modeling/megatron/gpt_model.py`
  - `nemo/collections/nlp/modules/common/megatron/language_model.py`
* T5
  - `nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py`
  - `nemo/collections/nlp/modules/common/megatron/megatron_encoders.py`
  - `nemo/collections/nlp/modules/common/megatron/megatron_decoders.py`
  - `nemo/collections/nlp/modules/common/megatron/megatron_transformer_encoder.py`
  - `nemo/collections/nlp/modules/common/megatron/megatron_transformer_decoder.py`
* PE
  - `nemo/collections/nlp/modules/common/megatron/transformer.py`
  - `nemo/collections/nlp/modules/common/megatron/attention.py`
  - `nemo/collections/nlp/modules/common/megatron/kerple_relative_position.py`
  - `nemo/collections/nlp/modules/common/megatron/sandwich_relative_position.py`
  - `nemo/collections/nlp/modules/common/megatron/xpos_relative_position.py`
* FA
  - `nemo/collections/nlp/modules/common/megatron/attention.py`

# Usage
* PE

```python
# GPT
model.position_embedding_type='' # Options ['learned_absolute', 'rope', 'alibi', 'xpos', 'sandwich', 'kerple']
# T5
model.encoder.position_embedding_type='' # Options ['learned_absolute', 'rope', 'alibi', 'xpos', 'sandwich', 'kerple']
model.decoder.position_embedding_type='' # Options ['learned_absolute', 'rope', 'alibi', 'xpos', 'sandwich', 'kerple']
```
* FA

```python
# GPT
model.use_flash_attention=true
```

# 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)
- [ ] Did you write any new necessary tests?
- [ ] 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

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


## Who can review?

Anyone in the community is free to review the PR once the checks have passed. 
[Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md) contains specific people who can review PRs to various areas.

# Todo
- [x] Add tests for PE and FA
- [x] Integrate multiple PE classes into one file 
- [x] Move if/else of different attention bias outside CoreAttention
- [ ] Update requirements files
- [x] Update dockerfile
- [ ] Add a warning for FA
