Add option to tune distopt bucket sizes
# What does this PR do ?

The distributed Adam optimizer's performance and memory usage is sensitive to the bucket size:

1. Larger bucket sizes improve performance (less kernel overhead and NCCL latency overhead)
2. There is wasted memory and communication if the bucket sizes don't match the param sizes
3. The bucket size should be smaller than existing buffers in the caching memory allocator, e.g. from temporary activation tensors. Otherwise the allocator will need to allocate new buffers for temporary distopt buffers (e.g. for all-gathers).

This PR attempts to mitigate (2) by adding an option that looks for the bucket size in `[bucket_cap_mb/2, bucket_cap_mp]` that minimizes waste. Note that this `bucket_cap_mb` should still be chosen based on (3) and that the optimal choice will depend on the model.

Based on https://github.com/NVIDIA/NeMo/pull/7399. Pinging @shjwudp.

**Collection**: NLP

# Changelog 
- Add option to tune distopt bucket sizes
 
# Usage

Configure the model with `model.optim.name=distributed_fused_adam`, `model.optim.tune_bucket_cap_mb=True`, `model.optim.bucket_cap_mb=<max buffer size in allocator>`:

https://github.com/NVIDIA/NeMo/blob/fb6fb2fc494afc6cbb13ab77e3829b69b6db6bb2/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?
- [ ] 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
* Closes https://github.com/NVIDIA/NeMo/pull/7399