Fix inability to compare trees in crossover and mutation

Previously I was unable to come up with a test that is capable of
comparing the before and after effects of mutation. Now by building a
string of nodes and its address one can do just that, see if 1.) the
node value has changed 2.) the tree nodes addresses have changed. If
either is true then the tree has indeed changed and therefore is no
longer equals.
Refactor TreeIntiailizer to make evaluator compulsory

Make setting the evaluator of the popoulation compulsory, so that when
TreeInitializer creates a new population it will also set the
population’s evaluator.
Fix Mutation infinite loop

Fix the problem when there is only 1 input node. Now an input node can
mutate into a terminal node and vice versa.