Allow applications to control the encoder mask type
# What does this PR do ?

When TensorRT optimizes Nemo GPT models it uses a different mask shape in the Context phase (triangular mask, i.e. causal) and in the Generation phase (1D mask, i.e. padding).
To support this TensorRT needs to control GPT's encoder mask type (which defaults to causal) via the model configuration.

**Collection**: NLP

# Changelog
- `MegatronGPTModel::model_provider_func` reads an optional `encoder_attn_mask_type` argument from the config file and passes it to the GPTModel constructor. The default value is a causal mask.
- Add an optional `encoder_attn_mask_type` argument to GPTModel constructor. The argument defaults to `AttnMaskType.causal`.
- Pass this argument to `get_language_model`  (previously hard-coded: `encoder_attn_mask_type=AttnMaskType.causal`)

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

## 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.