Refactor PP conversion + add support for TP only conversion
# What does this PR do ?

Updates the TP PP conversion script to support TP only conversion (back ported from NeMo 1.16)
Refactor PP conversion mechanism.

**Collection**: [NLP]

# Changelog 
- Refactor components to functions, split apart TP and PP conversion components
- Refactor PP conversion to model specific classes for PP conversion support
- Backport TP only conversion support (irrespective of whether PP conversion is supported or not)

# Usage

```python

python megatron_change_num_partitions.py \
    --model_file="ckpt/megatron_gpt_model.nemo" \
    --target_file="ckpt/megatron_gpt_model_tp2_pp1.nemo" \
    --tensor_model_parallel_size=1 \
    --target_tensor_model_parallel_size=2 \
    --pipeline_model_parallel_size=1 \
    --target_pipeline_model_parallel_size=1 \
    --tp_conversion_only

```

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