Add command interface

This should be a fairly functional sketch of the command interface.

Working on this and talking with @mkiwala has made me realize that we need to adjust the state machine a bit so that we're sending events based directly on the HTTP responses.  Otherwise, we will need to start duplicating logic from the state machine inside the event generator.