Added the CascadeHiddenNeuronCorrelationProblem and unit tests.

This new class serves as the a problem to be used in optimisation
during the correlation phase of the cascade-correlation algorithm.

Some classes needed a getClone method and copy-constructor.
Changed the usage of shuffle operators in NNTrainingProblem.

Two different shuffle operators are used during initialisation and
evaluation.

Now, by default, no shuffle is performed during evaluation. Since
most of our algorithms use batch-evaluation shuffling only wastes
time.

Some fixes to copy-constructors added.
Added CascadeOutputLayerTrainingProblem and unit tests.

This problem is used during the output training phase
of the cascade-correlation algorithm.
Small thing that I forgot to commit.
Added correlation phase of cascade-correlation algorithm.
Added output phase of the cascade-correlation algorithm.
Some cleaning and refactoring in CascadeCorrelationAlgorithm.
Added CascadeNetworkWeightEvaluationCount and unit tests.

This measurement is used to estimate the amount of computation
performed to evaluate the NN in the cascade correlation algorithm.
Some cleanup and refactoring.

Superfluous methods removed.

CascadeHiddenNeuronCorrelationProblem and CascadeOutputLayerTrainingProblem
now must be initialised by CascadeCorrelationProblem rather than doing it
automatically.

CascadeHiddenNeuronCorrelationProblem and CascadeOutputLayerTrainingproblem
now calculates domains everytime they are initialised rather than everytime
getDomain is called.

CascadeCorrelationAlgorithm now only tries to set up
CascadeOutputLayerTrainingProblem once.

Some more unit testing code added to CascadeCorrelationAlgorithmTest.