[ASR] Re-organizing data simulator with faster audio loading speed for data-simulator
# What does this PR do ?

Added a feature to data-simulator that loads audio files faster by limiting the target audio duration.

**Collection**: ASR

# Changelog 
- Audio reading functions in `build_sentence` are updated
- Added fully reproducible seeding mechanism for all the randomness.
- Changed all the wav reading functions to `AudioSegment.from_file()`. 
- Moved util functions to `data_simulation_utils.py`
- Added unit tests in `test_data_simul_utils.py`

# Usage
For relatively longer audio file sources (e.g. Fisher, Swbd etc) set the following 
`data_simulator.session_params.max_audio_read_sec`
to 2.5~3.5 seconds   (min is 2.5 sec). 
The shorter the faster the simulation is, but it will concatenate lots of words to form a sentence (speaker turn)

For datasets that are already segmented (e.g VoxCeleb, LibriSpeech etc), `max_audio_read_sec` does not need to be short (no speed gains). For already-segmented datasets, I recommend 10~20 seconds.

When we choose 2.5 secs for `data_simulator.session_params.max_audio_read_sec` in case of unsegmented datasets (Fisher, SWBD, TEDtalks, AMI, etc), we can reach 80~90% speed of the segmented datasets (Libri, Vox, etc)

```python
  python <NEMO_ROOT>/tools/speech_data_simulator/multispeaker_simulator.py  \
    num_workers=10 \
    data_simulator.random_seed=42 \
    data_simulator.manifest_filepath=manifest_with_alignment_file.json \
    data_simulator.session_params.max_audio_read_sec=3.0 \
    data_simulator.outputs.output_dir=./simulated_data \
    data_simulator.outputs.output_filename=sim_spk2_sess20 \
    data_simulator.session_config.num_sessions=1000 \
    data_simulator.session_config.num_speakers=2 \
    data_simulator.session_config.session_length=20 \
    data_simulator.background_noise.add_bg=False \
    data_simulator.background_noise.background_manifest=background_noise.json \
    data_simulator.background_noise.snr=40 \

```

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

