An abstract class providing some default implimentations for the phases of evolution.
Add initial population using generator
Add new members by crossing-over the population left after selection, keeping 'crossoverRate' precent in the population.
Preform mutation on members of the population
Select the next members of the population