Add support for `LightningDataModule`
One of the [recommended](https://pytorch-lightning.readthedocs.io/en/latest/guides/data.html) ways of dealing with data in pytorch-lightning is using the `LigtningDataModule`. This allows decoupling the model code from the data code. Then the training code would look something like this:

```python
trainer = Trainer(...)
model = MyModel(...)
data = MyDataModule(...)

trainer.fit(model, data)
```

The biggest blocker with using this at the moment is that the Nemo ModelPT abstract class requires you to implement all the data setup methods within the model itself, if you remove them an error is thrown. 

I have removed the inheritance for the `MTEncDecModel` and moved all of the data preprocessing and loading to a LightningDataModule class and already observed a number of benefits:
- Previously all of the data partitions would be preprocessed and loaded into memory every time the Model class gets initialized. DataModule seems to be smarter where it only prepares the data right before it's needed. So for example validation sanity check runs and only then, right before training, does training data get loaded.
- As another addition to the point above, the data loading and preprocessing only happens after all of the DDP processes have been initialized allowing each process do to its own thing in parallel. Whereas before it seemed a lot more sequential and took a long time.
- The setup function allows adding functionality from `MTDataPreproc` module so that all of the data tasks live within a single place.
- It incentivizes us to not use trainer-specific parameters like `world_size` for data preprocessing as all of that should be handled by the DataLoader.

**Describe the solution you'd like**

Essentially there should at least be an option to use LigtningDataModule, and ideally, the models should use it by default to be more aligned with PyTorch recommendation.

**Describe alternatives you've considered**

You could also possibly solve the above error by implementing functions required by the abstract class without returning anything, but I am not sure how it would play with LightningDataModule, and it's not a very clean solution. (Came up with it while writing this up, will give it a go)