Making evaluation configurable

Added genetic algorithm to Puzzle, in order to improve on the evaluation
configuration. Added the GA library. Reworked most of the Puzzle Test
code.