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.