Changed fitness evaluation so that it does not set the fitness for the
solution and rather just returns the fitness.  Made corresponding
changes to references to FitnessEvaluator.

Changes to CrossoverAlgorithm implementations to support unit testing.
Defensive coding improvements.

Major refactoring of ConservativeCrossoverAlgorithm to facilitate easier
maintenance and better unit testing.  Completed unit tests for this
CrossoverAlgorithm implementation.  Added empty classes for unit tests
for other CrossoverAlgorithm implementations.

Other unit test updates.