Use a key+value for ownership claims, not a directory

Also added a ``Lost`` method to the ``Consumer`` and ``CoordinatorContext`` so that coordinators can tell the ``Consumer`` that a task should be stopped (like if another node claimed the task).

This can happen if the owning node is under a lot of load and is unable to refresh a claim before it expires. In that case another node may claim it before the original owner is able to refresh it. The original node needs a way to let its consumer stop the task as it's being run elsewhere. (In case it's not obvious: this is a *bad* position for your cluster to be in.)
btw, I created a ticket to convert this to a time.Duration.