Adapter tuning for Megatron GPT models
# What does this PR do ?

This PR provides support to train and evaluate Adapter Infused GPT Models. The adapters supported are based off Houlsby et al.  https://arxiv.org/pdf/1902.00751.pdf for NLP tasks. Some minor modifications were made to support Pipeline parallel training and inference.

**Collection**: [NLP]

# Changelog 
- Added a training script for Adapter Infused training of a GPT Model.
- Added an evaluation script that loads a base GPT Model and it's corresponding adapter weights and runs inference.
- Added an Adapter Wrapper model which handles insertion of Adapters, loading and saving of Adapters for a base GPT Model.

# Usage
* Training Usage:

```
python megatron_gpt_adapter_tuning.py \
            model.data.train_ds=["PATH TO TRAINING .jsonl FILE"] \
            model.data.validation_ds=["PATH TO VALIDATION .jsonl FILE"] \
            model.language_model_path="PATH TO BASE GPT MODEL .nemo FILE" \
            name="NAME OF TRAINING RUN" \
            exp_manager.exp_dir="DIR TO SAVE CHECKPOINTS and ADAPTER .nemo FILE" \
            trainer.max_epochs=2
```

* Inference Usage:
```
python megatron_gpt_adapter_eval.py \
            gpt_model_file="PATH TO GPT MODEL .nemo FILE" \
            adapter_model_file="PATH TO ADAPTER MODEL .nemo FILE (generated by training script: ./megatron_gpt_adapter_tuning.py)" \
            data_paths=["PATH TO A .jsonl FILE CONTAINING PROMPTS"] \
            output_file="PATH TO OUTPUT FILE TO DUMP PREDICTIONS"
```

# 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?
Jenkins Tests to train and evaluation Adapter Support for tp=2 and pp=2 GPT Models.
- [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

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.

# Additional Information
* Related to # (issue)

# Future Work
* Refactor class hierarchy between Adapters, P-Tuning and Prompt Tuning.
