Yang optimisation functions

- 2 stochastic and 2 deterministic functions
- Includes example XML using Firefly algorithm as specified in paper
F-Race Fixes

-F-Race no longer discards all parameter configurations if the post-hoc
test fails to determine where the statistical difference lies

-F-Race now compares minProblems to the length of the results list
(not the iteration count) to determine when statistical tests should
be performed

Signed-off-by: Bennie Leonard <bennie.leonard@gmail.com>
Added MinimumOfMeasurement and MaximumOfMeasurement.

These wrappers can keep track the maximum and minimum of a
measurement.
Added AreaUnderROCCurve measurement and unit tests.
Change AreaUnderROCCurve to extend Measurement<Vector>.
Allow for domain information to be stored in a NN.

Each Neuron now keeps track of its own domain. Layer calculates its
domain by concatenating the domains of the Neurons in it.
Architecture calculates its domain by concatenating the domains of
the Layers in it.

PrototypeFullyConnectedLayerBuilder now assigns a domain to each
Neuron. It is also now capable of calculating a Neuron's domain
based on its fanin.
Added NeuronDomainProviders and changed NN problems to use new domain.

Classes implementing NeuronDomainProvider provides the domain needed
for a new Neuron. Current implementations include:
PresetNeuronDomain - uses user-set domain;
FaninNeuronDomain - calculates domain from fanin.

NN problems now read domain information from NN architecture instead
of calculating it from scratch.
Added the use of the new domain providers to the layer builders.

Fixed bug regarding FaninNeuronDomain and PresetNeuronDomain that
did not implement the correct interface.

Removed conflicting/obsolete domain initialisation strategies.

Added the correct usage of the domain providers to the cascade
network problems.

Modified many unit tests to use the new domain providers.

Some code cleaning.
Added LambdaGammaNeuronDomain.

The new lambda-gamma domain provider sets one lambda and one gamma
domain for each neuron. Since this is done for each neuron instead
of an entire network, it implies that NN domains are a bit
different, but shouldn't affect any algorithms.

LambdaGammaVisitor and LambdaGammaSolutionConversionStrategy has
been adapted to deal with the new domain organisation.

Some unit tests had to be adapted.

Inadvertently fixed a bug: LambdaGammaSolutionConvertionStrategy
needs to be initialised, but the initialise method is not called
anywhere. The new implementation doesn't need initialisation.
Initialise method removed as it doesn't do anything.

Some code cleanup.
Fixed issue in the way TuningProblem takes measurements.

TuningPromblem took measurements only after the target algorithm
has finished. This meant that it was incompatible with measurements
that needs information from the entire simulation run. This is has
now been solved with the use of MeasuringListener.

MeasuringListener is an AlgorithmListener that automatically takes
measurements throughout the execution of the target algorithm. The
final measurement can be retrieved afterwards.
MeasuringListener now uses a resulotion to determine when to measure.

This allows the listener to use only as much computational power as
needed. Measurements are still taken before the first and at the
last iteration.

Small bug fix in new work in TuningProblem.
Merge pull request #177 from censlin/NNDomainRefactor

NN domain refactor
Merge pull request #175 from benniel/f-race

F-Race Fixes
Merge pull request #167 from censlin/minMaxOfMeasurement

Added MinimumOfMeasurement and MaximumOfMeasurement.
Merge pull request #166 from censlin/fraceMeasurementBug

Fixed issue in the way TuningProblem takes measurements.
Merge pull request #154 from robgarden/yangFunctions

Yang optimisation functions
Merge pull request #156 from censlin/AUCMeasurement

Added AreaUnderROCCurve measurement and unit tests.
Fix Yang functions
Merge pull request #185 from robgarden/yang

Fix Yang functions