Separated training data from real data.

Added a function to gather training data from the datasets. That way the
'best' solutions can be tested against data it hasn't seen yet. Added a
function that performs that test, and outputs the results. Some minor
fiddles past that.

Additionally, added some skeletons for the Neural Network stuff.