[TTS] Update AudioCodec API
# What does this PR do ?

This PR extends the API for `AudioCodec`, adds comments and small fixes.

**Collection**: TTS

# Changelog 
- Added `encode` to convert a time-domain signal into a discrete representation
- Added `decode` to convert a discrete (quantized) representation to audio
- Use `quantize` to convert a continuous encoded representation into a quantized discrete representation
- Use `dequantize` to convert a discrete representation to a continuous encoded representation
- Use batch-first format for quantized discrete representation
- Updated input/output type definitions
- Added docstrings in audio_codec modules
- Added logging in audio_codec modules and callbacks

# Usage
Example of usage:

```python
# instantiate a model
model = AudioCodecModel(…)

# convert `audio_in` to disrete representation
# `tokenized` has shape (batch_size, num_codebooks, num_frames)
tokenized, tokenized_len = model.encode(audio=audio_in, audio_len=audio_in_len)

# convert a discrete representation to time-domain audio
audio_out, audio_out_len = model.decode(tokens=tokenized, tokens_len=tokenized_len)
```


# 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
- [x] 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)
