switch to mcore dataset [with FIM support]
jenkins jenkins jenkins jenkins jenkins jenkins jenkins jenkins jenkins
# What does this PR do ?

1. Switches to megatron core dataset.
2. Adds FIM support.
3. Adds starcoder config.


**Collection**: NLP

# Changelog 
- Added additional functions in oreder to use mcore ds.
- Changed NeMo ds classes to mcore ds classes (megatron_gpt_model.py).
- Created gpt_fim_dataset.py with GPTFIMDatasetConfig and GPTFIMDataset classes in order to use FIM techinque.
- Added new config for starcoder models (megatron_starcoder_config.yaml).

# Usage
Example of FIM usage. This part should be added to the data section in the model config:
```yaml
add_fim: True # Set to True to use FIM
    fim:
      # fill in the middle
      rate: 0.5 # Probability to convert a training sample into a "Fill-in-the-Middle" format. Must be between 0 and 1
      spm_rate: 0.5 # Probability that the a FIM sample uses the SPM format over the PSM format
      split_sample: null # String around which to split the sample for FIM. If None (default), FIM is applied on the sample-level
      fragment_rate: 0.5 # Rate of FIM on each fragment when fim_split_sample is not None
      no_prefix: null # Do not apply FIM to fragments that start with this prefix
      extra_tokens:
        prefix: "<fim_prefix>"
        middle: "<fim_middle>"
        suffix: "<fim_suffix>"
        pad: "<fim_pad>"
        eod: "<|endoftext|>"
```

# Jenkins CI
To run Jenkins, a NeMo User with write access must comment `jenkins` on the PR.

# 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)
- [ ] 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
* Related to # (issue)
