[Core]: Laid groundwork for more fitness propagation options

Wrote some functions that will be required for providing different options
for propagating fitnesses up and down the hierarchy.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
rebase
Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Fitness Propagation]: Added FitnessPropagator class

Added the FitnessPropagator class, to allow downwards (or not) propagation
of fitnesses in a hierarchical GA.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[HierarchicalGenePool]: Integrated FitnessPropagator

Integrated the fitness propagation system into HierarchicalGenePool, so
that fitnesses can now be propagated up and down the hierarchy (or not).

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Examples]: Updated examples to use FitnessPropagator

Updated the examples to use the FitnessPropagator class (though they only
use the NonPropagator subclass, which does nothing).

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Headers]: Documentation pass

Added some explanatory comments to the tops of the header files, to make
using the library easier.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Cut-And-Splice Crossover]: Removed TODO

Removed the TODO from the cut-and-splice crossover operator. Runaway
crossover is caused by selection pressure, and not a bug in the operator
itself, and there is nothing to "fix". Though I may come up with a more
"neutered" version which is self-limiting in some way in the future.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>