Reworked handling two pop's dependant fitnesses

Now send fitness functions the organism, current pop, other pop and the
connection matrix between them. Fitness function responsible for using
matrix to access populations.

Organism now holds its own index when its created so we don't have to
keep setting this value. We don't currently keep the organisms in their
correct places when doing reproduction, this needs to be addressed.

Fixed old functions to handle new evaluation method. Also added the
minimization to their test functions so they don't have to have negative
maximization. Also added ... when they don't need all the info we now
send by default.
Moved evaluation of multi pop into eval fn

The evaluation of multiple pops is now fully handled within the
evaluation function. This is so I can more easily call it from other
parts of the driver code.

I also attempted to start dealing with direct replacement for all
reproduction operates, but ran into a lot of trouble with elitism. Need
to think about how to handle elitism more directly, massive performance
differences from what look like subtle changes. Will come back to this
soon.