added NeuralNetwork base class which provides some common functionality, such as making networks trainable