Distributed optimizer support for experimental FP8 tensors
# What does this PR do ?

This PR integrates with experimental `Float8Tensor`s from the [Transformer Engine float8tensor_experiments branch](https://github.com/sudhakarsingh27/transformerengine/tree/float8tensor_experiments). This allows the model to only store FP8 weight matrices. The distributed optimizer will store an FP32 master copy of the weights and will perform param all-gathers in FP8.

**Collection**: NLP

# Changelog 
- Add logic to initialize GPT with FP8 weight matrices
- Add distributed optimizer support for FP8 weight matrices, including FP8 param all-gathers

# Usage
Enable FP8 support:
https://github.com/NVIDIA/NeMo/blob/19a3b7015fe353199af97903df1814e3a470b503/examples/nlp/language_modeling/conf/megatron_gpt_config.yaml#L169

Use Megatron-core model:
https://github.com/NVIDIA/NeMo/blob/19a3b7015fe353199af97903df1814e3a470b503/examples/nlp/language_modeling/conf/megatron_gpt_config.yaml#L49

Set the optimizer to `distributed_fused_adam`:

https://github.com/NVIDIA/NeMo/blob/f8be40b75ee1f8437b56fcc9602dc2aaddfb0643/examples/nlp/language_modeling/conf/megatron_gpt_config.yaml#L228

# 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?
- [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?

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.

Pinging @sudhakarsingh27.

# Additional Information
* Depends on https://github.com/sudhakarsingh27/transformerengine/tree/float8tensor_experiments, but there are import guards to handle the case that it isn't available.
* Depends on https://github.com/NVIDIA/apex/pull/1723
* Depends on https://gitlab-master.nvidia.com/ADLR/megatron-lm/-/tree/run_fp8_poc_with_nemo/
* Behavior is unchanged for non-FP8 models.
* If any FP8 params are detected, overlapping is disabled for non-FP8 grad reductions and param all-gathers.