Variable Hidden Layers

Have drastically changed architecture, adding Layers (sort of a linked
list of neural layers), removing a lot of stuff from the neurone class
(it's more of a data class now), and managed to allow variable hidden
layers. Confusion matrix is still a bit crap in terms of error
detection. Think it needs to be compared to a 'perfect' error matrix
(created from the pattern) and have error calculated from that.

Needs a big clean up too.