Perform a type-safe subtree crossover. The crossover points will be chosen
randomly but must be type-safe. The first parent will be cloned to produce
the child. The tree formed from the crossover point of the second child will
be copied and grafted into the parent's clone and its crossover point.