Added mutations as part of crossover algorithm.
Made mutations produce children instead of modifying chromosomes
in-place.
Made crossover only produce one child per iteration instead of two.
Changes to better encapsulate which chromosomes are still eligible for
reproduction in a given generation.