Add main run loop to consumer

The ``TestConsumer`` test is really ugly but nicely exercises all of Consumers functionality *except* Commands (which we haven't specified yet).
No, I change it for tests.

Eventually it needs to be replaced with something more sophisticated/configurable as the comments imply.