Add initial integration with NVIDIA DALI
This pull request **introduces 6 alerts** when merging ea3f41cc628b363163f58e9130577d655c2bed2c into ccab141b54fab6fd7f6370e1bd3e18ce0c529364 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-42dbc1969064c1fd79da7e6da14818775c8b4584)

**new alerts:**

* 4 for Unused import
* 2 for Asserting a tuple Finally, before merge, there needs to be at least one Jenkins task to run the Dali pipeline with fast dev run to ensure the pipeline runs.  there could be an issue with non-En languages - I'll reach out via email with detailed instructions > 
> 
> Looks good to me. Thank you!
> Are we ready to merge or this is still a WIP?

I think it is ready to merge. This pull request **introduces 1 alert** when merging 5cbe85b34d448eb15bb2b97c238a524df1d99494 into cd55594e0f60a4bcbaf6d0e4196c1404591e0076 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-48d04130cd1ee07dfba9a8ce701cf557657e18db)

**new alerts:**

* 1 for First parameter of a method is not named &#39;self&#39; This pull request **introduces 1 alert** when merging 75d069031ea36b2a1cff00f390280ba937aba42b into cd55594e0f60a4bcbaf6d0e4196c1404591e0076 - [view on LGTM.com](https://lgtm.com/projects/g/NVIDIA/NeMo/rev/pr-159ef2925cbe9a8ead7e7c20e6882f60eb7cd1f3)

**new alerts:**

* 1 for Syntax error @okuchaiev @jantonguirao, seems like our CI currently crashed due to this merge. Can we either disable the DALI tests or revert? @blisc - build and test before the merge:)
I think you can disable until DALI 0.28 is public.
This is rather expected as this PR utilizes functionalities that are not available in the DALI public release, only in the nightly build.
Enables the possibility to use NVIDIA DALI for data loading and preprocessing, instead of Pytorch's data loader and torchaudio, respectively.

General idea:
A user can easily switch to a DALI based preprocessing pipeline by simply switching a flag ``use_dali`` in the configuration file.

A new new module `AudioToCharDALIDataset` is introduced, which is able to also handle preprocessing (`AudioToMelSpectrogramPreprocessor` and `AudioToMFCCPreprocessor`) as requested. Because the DALI implementation does things a little bit differently (bypass Pytorch dataloader, combine loading and processing into a single module, etc) it requires special treatment in ctc_models.py.

I was able to obtain significant speedups. I am observing ~3x speed improvement when training Quartznet with a batch size of 128.

Signed-off-by: Joaquin Anton <janton@nvidia.com>