Add a subsidary class (LoopSequence) to the EventNavigator that encapsulates the actual processing, i.e. looping over of events and tracking comannd line configuration options.
Rework the event loop, by giving control to the EventNavigator, via the LoopSequence object. Several functions (e.g. ClearGlobalData(), and the handling of output) still lie outside of this, but the structure is now mostly there.
Stop using gTotalEvents. This global can now be eliminated.
Tidy-up of comments and dead code.