1) Since portions of a simulation may be run multiple times (notably in
calculating optimal coast time), update the max altitude whenever the rocket's
vertical velocity is positive rather than actually looking for a max. The last run is the "real" one, so the correct apogee is recorded as max altitude
2) Don't have handleFlightEvent() set the simulation progress directly, as
this can end up skipping some updates from the postStep() listener.