Added functionality and testing for all processes up to and including backwards propagation on the layer level. Refactored code and split all tests into multiple files.