Balancers, take two

* Use a weighted choice algorithm for `EtcdBalancer`.
* Enable client redirects. `Worker.Hello()` returns a 302 if a peer is available, or a 429 if the cluster is full. We'll want to change this to a 503 in the future; for now, I used 429 to distinguish "cluster full" from "storage unavailable" or "invalid input."
* Bump envconf to pick up a fix for `TestConfigFile`.
Not sure if it makes sense to put these into a list that we iterate or keep them separate and redundant. A list would ensure that we take exactly the same action on each, separate makes it a bit clearer to read.