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.

I think the last time I used "goto", I was using Borland Turbo C. :-)