Reworked Genetic Algorithm framework. Updated MUI.

GA framework now uses custom data GenePool a and Gene a, rather than a
typeclass to allow for subjective fitness by passing a lambda to Gene
a's _gene_fit field.

There is a wart in this implementation: to support lambda-passing, a
Gene's fitness attribute must actually be a function. The detail is
hidden from view by calling it _gene_fit and defining another fitness
function that applies it to itself. It might be possible to work around
this, but I have yet to find a way since a Gene's fitness should be
independent of its pool. (although having neighbor-dependent fitness
could be an interesting research question.)