Add balancers.

* Add a `Balancer` interface and `{Etcd, Static, No}Balancer`.
* Enable client redirects. `Worker.Hello()` returns a 302 if a peer is
  available, or a 429 if the cluster is full.
* Clean up etcd-related log messages.
`EtcdLocator`: Don't set `lastFetch` for errors.

Rename the etcd polling and publication functions for clarity.
`loadEnvConfig`: Avoid decoding into nil structs.
Add balancers to the config loading tests.
Bump envconf.
Add retries to `EtcdBalancer`.
Clean up `Application.Stop()` and config comments.
Fix version race in `roundTrip`.
Change redirect status to 307.

This is consistent with Web Push draft-02.
Add basic balancer test.
Add a mock balancer.
Fix weighted choice logic.
Report all non-etcd errors as temporary.
Fix off-by-one error in redirect detection logic.
Clarify `ok` => `shouldRedirect`.
Merge pull request #144 from mozilla-services/feature/balancers

Balancers, take two