Major

This is a major commit.

First, I wrote all the input and outputs to *.csv files. This allowed me
to create the dataIO class which reads the *.csv files into the input
and output arrays. Made a small error in the dataIO class which isn't
much of a problem as it still works, but the array dimensions are the
wrong way round to the rest of the code. Currently the amount of inputs
and outputs are defined in the function arguments, but given that I have
a specified a maximum number of inputs, in future I could just have the
number of inputs and outputs determined by if the input and output files
are there are not, as I have created an input output file specification
as well.

The dataIO class was then integrated into the main code, the idea behind
this is that I should just be able to pass the dataIO object to the
trainer, and the trainer will do the training loop rather than in the
main code. As the trainer class will be able to access the input/output
arrays from the dataIO class.

For now, passing the outputs to the trainer class works, but now I need
to make it work for the inputs, then I will be able to get rid of the
training loop by moving it inside the trainer class.