Online batch generation for unsupervised learning 
🚀 Feature
As an alternative to pulling batches from a pre-made dataset, provide users with a hook that allows them to specify how batches are generated for each training step. This would allow users to provide logic for generating a batch of during online during training. This would be ideal for Reinforcement Learning models and other unsupervised problems.
Motivation
Currently Lightning expects all models to utilize pre-made dataset which is used to generate mini batches through a DataLoader. This works for most use cases, but for some case, such as Reinforcement Learning models, this requirement is counter intuitive as the data is generated online during training. In order for these models to work with Lightning, custom Datasets and runners need to be create to generate the batch and wrap it in a DataLoader.
Pitch
Add an additional hooks for specifying the generation of a batch for train, val and test. Going forward I think there are two options to implement this feature.
1: Check if the user has populated the train_batch function and call this instead of the dataloader directly for the training loop. This will probably require a lot of code churn in order to handle the various checks for the dataloader in the main Trainer
2: Create a 'dummy' dataloader that wraps the train_batch function provided by the Lightning model. This is probably a simpler implementation as the underlying logic in the Trainer that handles the dataloader shouldn't need to change.
Alternatives
The alternative to this would be to have the user create custom DataLoader/Datasets that generate the batch on the fly. This will give the same end result, but is arguably a messier solution and requires more work and effort for the user.