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.
Use a recursive mutex in HttpRequest.

In some error cases, libevent will call our callback synchronously, so we
need to be prepared for that (and not deadlock!).