Make quick runner use multithreading and aggregate statistics
Refactor GeneticAlgorithm

- Use the terms:gene and chromosome correctly
Allow ImmutableState to be created without a (mutable) State
Notify ProblemDomain at beginning and end of generation
Evaluate fitness for all chromosomes based on the same set of sequences