Retry etcd requests with exponential backoff

* Log etcd operations via `etcd.SetLogger()`.
* Set `CheckRetry` for logging and filtering retry attempts.
* Retry get and set operations that return Raft and etcd internal error codes.
* If the last fetch operation failed and the registration interval (`defaultTTL`) has not elapsed, `Contacts()` now returns the cached result without an error. We'll want to tune the interval appropriately.

@bbangert r?