Make HttpRequest extend the lifetime of its HttpConnection.

Also make HttpConnection::Clone return a shared_ptr instead of a raw pointer.
Add an etcd watcher class.

Also a few cleanups I forgot in previous commits, like not using a temporary
object when using UpdateLeader, and using an unique_ptr in RequestDone.