Change crossover to generate population

Previously the crossover interface defined a method for creating a child
from two parents and the population generator was responsible for
calling the crossover. It seems more appropriate for the crossover class
to create the entire new generation. This way it can deal with cases
specific to that implementation. For example we may not want to use
invalid children.