Redirect clients to different nodes if the current node is full

This pull request adds an `EtcdBalancer` that redirects clients to different hosts, and refactors some of the shared etcd logic used by the balancer and locator. If the balancer is unavailable or the cluster is full, `Worker.Hello()` responds with a 429.

See https://bugzilla.mozilla.org/show_bug.cgi?id=1091192 for more info. `MozLoopPushHandler` doesn't support redirects yet, so this is only the server-side plumbing.

@bbangert r?