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!).
Add a libevent::Base::Delay method, for one-off delays.
Do not CHECK-fail when we X-Etcd-Index is missing.
Convert etcd watchers to use util::Task.