Simplified a lot of code which was unnecessarily generic.
Now using monads to manage the state of the random number generator
rather than passing it around by hand.
Also made some performance improvements, then increased the population
size so more combinations are tried in a similar length of time.
The previous code to calculate the accentDifference for the fitness
considered cases where a=b, so the minimal difference was always 0.
The new code explicitly excludes the index, so a != b (except both
entries were sampled to the same color, but that is what we want to
punish here).
Stop when there has been little improvement across the last 5
generations, rather than the last 1. This generally allows a higher
scoring solution to be reached.
This was more of a developer tool than part of the documentation, so it
makes sense to keep it off the main site. Also when modifying the
palette generator, the documentation on the site would become out of
sync with local changes anyway.
This allows us to reach an even better colour scheme rather than
stopping after a fixed number of generations.
For images which create a good colour scheme quickly, we avoid doing
unnecessary passes which don't lead to much improvement.
This does not rely on an external library for colour selection,
therefore it can be fine-tuned to create a better theme.
Closes#2 because Colorgram is no longer used.