Removed Redundant code, Added scaling function

During the allocation of memory for the dataset, there was a lot
of redundant code. This was removed in favour of a check system, where
failed allocations are held until a single point, rather than immediately
after each allocation.

The scaling function was also written. Due to the way data is presented
to the network, the dataset will now hold data which is scaled for
network use. Scaling wwill occur when the data is being put into the
dataset, or when it is being presented.