Added DifferentiableProblem interface.

This interface is necessary for algorithms such as gradient descent.

Implemented the new interface in FunctionOptimisationProblem.
CascadeHiddenNeuronCorrelationProblem now implements DifferentiableProblem.
CascadeOutputLayerTraining problem now implements DifferentiableProblem.

Bug fix: calculateFitness should be public.