Split up the code for the evolve management command.

The evolve command was one large, complicated function with a scattering
of variables, some of which overwrote others.

This cleans it up a little bit by taking the big chunks of logic and
placing them in their own functions. Several of the common variables are
also now member variables.

It also stops using the print statement for output, and now uses
self.stdout.write.