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).
When the Watcher is shutdown() it may return a "", nil.   So you may need to check if ```task == "" ```too