Removed the call to init() inside the NeuralNetwork constructor.
Always increase episodes in episode() (even if terminated naturally)
To keep things clean, set memory to zero in NeuralNetwork constructor
Adjust episode in unit_test to 1000 + 1 (to account for the call to start())
Introduce two new DataSet:
- MultiDataSet that combines many DataSets into one
- MemoryDataSet that reads a DataSset and puts it into memory