Add support for multi-modal optimization using deterministic crowding and distance-derated fitness.

Partially based on how it's presented here: http://cadlab.mit.edu/publications/96-senin-tr9602-ga/dontindex/96-senin.pdf
There are also some other details I changed, please let me know if there's anything to correct/improve.
Cheers!