Avoid stack overflow in EtcdClient watcher.

In some error cases, this can call itself recursively, until there it works,
but we could run out of stack. We're usually already in a libevent dispatch
callback, but making sure is the safest option.
Convert etcd watchers to use util::Task.