Fix population to use quick sort
Modify run_evolution(), populate() to accept more settings

Previously when you ran run_evolution() you would not be able to
specify crossover and mutation functions. But now you can.

Changes have been reflected downstream.