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).
Since Consumer.stop is closed before Coordinator.Close is called, if Watch() returns "", nil after Close is called everything will shutdown properly.

It's a bit of a fragile sequence of operations, so we might want to add an explicit check for task=="" in the watcher goroutine... we'll see.