[TTS] Create EnCodec training recipe
# What does this PR do ?

This is an experimental draft for the EnCodec training recipe based on https://github.com/NVIDIA/NeMo/compare/encodec?expand=1

The PR is quite large, but has been minimized to what is necessary to run the training end to end and get a good result. It is still missing some features from the original EnCodec code that may be added in later. Including:

- Data augmentation in data loader
- Multi-resolution training (might not need to support as a feature)
- Streaming /w causal convolutions (might not need to support as a feature)
- Gradient balancer (might be unnecessary if we tune model and scale losses properly).

Note that the VQ implementation does not work with FP16 (loss always becomes NaN). I have not tested the distributed training.

**Collection**: [TTS]

# Changelog 
- Add EnCodec training recipe

# Usage

Example script invocation

```bash
python /home/rlangman/Code/NeMo/examples/tts/encodec.py
--config-path=/home/rlangman/Code/NeMo/examples/tts/conf/encodec
--config-name=encodec.yaml
max_epochs=100
weighted_sampling_steps_per_epoch=1000
batch_size=32
trainer.devices=1
log_dir=/home/rlangman/exps/dns4_jamendo_24khz/EnCodec/test_vq/samples
exp_manager.exp_dir=/home/rlangman/exps/dns4_jamendo_24khz
exp_manager.create_wandb_logger=true
+exp_manager.version=test_vq
+exp_manager.wandb_logger_kwargs.project=encodec_dns4_jamendo_24khz
+exp_manager.wandb_logger_kwargs.name=test_vq
+train_ds_meta.dns4.manifest_path=/home/rlangman/data1/data/dns4/train_manifest.json
+train_ds_meta.dns4.audio_dir=/home/rlangman/data1/data/dns4/audio_24khz
+train_ds_meta.dns4.sample_weight=0.5
+val_ds_meta.dns4.manifest_path=/home/rlangman/data1/data/dns4/val_manifest.json
+val_ds_meta.dns4.audio_dir=/home/rlangman/data1/data/dns4/audio_24khz
+log_ds_meta.dns4.manifest_path=/home/rlangman/data1/data/dns4/log_manifest.json
+log_ds_meta.dns4.audio_dir=/home/rlangman/data1/data/dns4/audio_24khz
+train_ds_meta.jamendo.manifest_path=/home/rlangman/data1/data/jamendo/train_manifest.json
+train_ds_meta.jamendo.audio_dir=/home/rlangman/data1/data/jamendo/audio_24khz
+train_ds_meta.jamendo.sample_weight=0.5
+val_ds_meta.jamendo.manifest_path=/home/rlangman/data1/data/jamendo/val_manifest.json
+val_ds_meta.jamendo.audio_dir=/home/rlangman/data1/data/jamendo/audio_24khz
+log_ds_meta.jamendo.manifest_path=/home/rlangman/data1/data/jamendo/log_manifest.json
+log_ds_meta.jamendo.audio_dir=/home/rlangman/data1/data/jamendo/audio_24khz
```

# 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