Set it up so that grains and genes can be setup to different chromosone lengths and simulation lengths at run-time
Added output for final values of roots, leaves, seeds, reserve.
Since new grains are auto-randomized, simplified seeding code
Reduced maximal step count.
Fixed mistake in system of equations
Added sanity check regarding reserve to the stepper
No longer needed write_system() function
Made some functions static so they could be safely used outside the class.
Generalized the run() function to accept an observer function
Added data output notice to end of function
Minor reformatting of equation system
Encapsulated harvest as part of the state variable.
Changed internal accessor/modification functions to static, made appropriate changes.
Added harvest() accessors
Eliminated reset() function by moving all of its stuff into the run() function where that appropriately belongs
Altered state_type to have space for the harvest vector
Attempted to improve encapsulation of run() and discrete_event_queue
discrete_event_queue is no entirely encapsulated within run()
Gave randomize() a more meaningful name: randomize_genome()