Unifying crossover function interfaces

At this point, instead of switches, I should refactor and have a
mutation class (and crossover class), such that GA inherits from
Algorithm, Mutation, and Crossover, the latter two of which I can derive
with the different types of mutation/crossover. This beats wrapper
functions by a long shot.

Population as a typedef should also be moved into the Parameters
namespace, as it is not necessarily a GA thing.