Router: Fix persistent connection handling.

* Ensure `notifyContact` discards the response body. If the body is
  closed but not consumed, the underlying TCP connection will not be
  reused.
* Add an `IdleConns` option for controlling the maximum number of idle
  connections per host.
Add basic routing tests.
Add `GCMPingConfig.IdleConns`.

Remove ad-hoc HTTP client from `GetAWSPublicHostname()`.
Add socket count metrics.
Add `idle_conns` to the sample config.
Update mock stats calls in broadcast router test.
Hotfix: Use `GITREF` for the version.
Add go cover check

Check to see if go cover is installed, prompt user if it is not.
Merge pull request #158 from mozilla-services/feature/makefile

Add go cover check
Remove redundant mocks; merge router tests.
Merge pull request #153 from mozilla-services/feature/router-idle-conns

Fix persistent connection handling in the router
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.