[Selection Strategy]: Made selection strategy object-oriented again

Due to a realization made under time constraints, three different
generational models (ES, GA, and SSGA) were implemented in the
SelectionStrategy class as "modes", which breaks with the OO paradigm.

This fixes that, by replacing SelectionStrategy with the GenerationModel
class, which is very similar to SelectionStrategy. SelectionStrategy
becomes much more focused, being responsible SOLELY for selecting parents
for crossover, with GenerationModel taking up most of its former workload.
All 3 previously implemented models are re-implemented in the new format.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Generation Model]: Trimmed some unnecessary elements

Removed some parameters that were included from the transition from
SelectionStrategy to GenerationModel (and were no longer necessary). Also
removed an extra file that crept into the src/generations folder.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Generation Model]: Fixes for issues with generation model

Fixes for issues in the implementation of the generation model. Should work
properly now (still need to update the examples).

Also reworked the 1-max example to use the new model.

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Generation Model]: Updated all examples to use generation model

Updated all the examples to use the new GenerationModel class, instead of
the old SelectionStrategy.

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