[TTS] Add cosine distance option to TTS aligner
# What does this PR do ?

Add configuration to TTS aligner which uses scaled cosine distance instead of euclidean distance.

**Collection**: [TTS]

# Changelog 
- Add code for cosine distance based alignment

# 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

# Additional Information

The current aligner used for FastPitch training has a few problem:

1. It aligns slowly for datasets with lots of speakers.
2. If binarization loss is enabled/warmup too soon then alignment learning stops before accurate alignments are learned.
3. When fine-tuning, the model does not learn alignment of target speaker well.

Using cosine distance instead of L2 distance can fix these problems. Cosine distance in general a lot more accurate and stable when it comes to similarity problems. It also avoids possible issues with the binarization loss because the scale of the cosine distance is fixed regardless of the scale or content of the alignment embeddings.

To test this I trained FastPitch on the VCTK dataset for 300k steps and provide the alignments and loss graphs below.

As seen, using cosine distance aligns faster, produces more accurate and sharper alignments, has a lot lower alignment loss (especially binarization loss), and as a result converges to a model with significantly better accuracy all around (mel, duration, pitch, energy). Though the gap between the two would likely shrink if we train it for several million steps.

**Alignments**

_Example 1_

`L2`
![align_l2_1](https://github.com/NVIDIA/NeMo/assets/9942053/3a14f1b4-7c09-453b-906a-74ce01cb0c9a)
`Cosine`
![align_cos_1](https://github.com/NVIDIA/NeMo/assets/9942053/9d7397ff-1944-4443-bcbd-4025b0b95189)

_Example 2_

`L2`
![align_l2_2](https://github.com/NVIDIA/NeMo/assets/9942053/e92098a7-4b51-4422-ae62-0a80eee050a5)
`Cosine`
![align_cos_2](https://github.com/NVIDIA/NeMo/assets/9942053/a22917ee-f8b0-4b43-a567-f3eda43b8d88)

**Alignment Losses**

![ctc_loss](https://github.com/NVIDIA/NeMo/assets/9942053/b3fed69c-686e-470b-b44e-7222d3594d99)
![bin_loss](https://github.com/NVIDIA/NeMo/assets/9942053/1b802736-db78-43a7-9fed-5eb3d2c7b790)

**Reconstruction Losses**

![mel_loss](https://github.com/NVIDIA/NeMo/assets/9942053/12346ca2-9c5f-48aa-a0cc-4eb3bef281de)
![dur_loss](https://github.com/NVIDIA/NeMo/assets/9942053/437090d7-083a-48f9-9aa8-574e9d439df1)
![pitch_loss](https://github.com/NVIDIA/NeMo/assets/9942053/3dd307a9-5569-4847-a0b1-a23e0ad2b986)
![energy_loss](https://github.com/NVIDIA/NeMo/assets/9942053/0b15fefe-c20a-4ec4-9df5-225446082927)
