Example code improvements + documentation improvements + dispatch function

+ The dispatch function eliminates the need for this boilerplate:

if __name__ == '__main__':
    try:
        SimulateCommand().process(sys.argv, sys.stdin, sys.stdout)
    except:
        import traceback
        logging.fatal(traceback.format_exc())

You write this instead:

dispatch(SimulateCommand, sys.argv, sys.stdin, sys.stdout)

+ Net reduction from 28 to 27 TODOs. Most remaining TODOs are for documentation.

+ One big TODO today: Unit test coverage

Signed-off-by: David Noble <dnoble@splunk.com>