[Cut-and-Splice Crossover]: Wrote cut-and-splice crossover

Wrote the "cut-and-splice" crossover operator, which picks one point in each
parent, and splices everything after it onto the first part of the other
parent (potentially producing two offspring with different genome lengths).

Signed-off-by: Sebastian Lenartowicz <slenarto@uoguelph.ca>
[Individual/Operators]: Switched everything over to use the Genome class

Reworked the Individual class to use the Genome class instead of three of
its parameters (genome length, genome, and gene pools). Also rewrote the
crossover/mutation operators to take this into account (this should make
writing further operators that change the childrens' length much easier).

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