Layer definitions and declarations re-organization and documentation

The goal is to have a more readable and easily navigable codebase (concerning layer definitions/declarations):

- [x] Split parts of `vision_layers.hpp` into `loss_layers.hpp`, `data_layers.hpp`, and `neuron_layers.hpp`.
- [x] Add `LossLayer` for cleaner inheritance
- [x] Split loss layer implementations into own `.cpp` files
- [ ] Concise documentation of each Layer in the header files