Add graceful shutdown

Adds graceful shutdown per #139. `Application.Close()` performs the following steps:

* Stops the HTTP `/update` listener and closes all open TCP connections. This should deregister the instance from the ELB.
* Deregisters from the balancer, waiting for the change to propagate.
* Closes the WebSocket listener and disconnects all existing clients.
* Stops emitting client count metrics.
* Deregisters from the locator, waiting for the change to propagate.
* Closes the routing listener.

To make implementing this a little easier, I've split the listeners into `SocketHandlers` and `EndpointHandlers`, and moved the health-related handlers into a separate plugin to avoid a circular dependency.

Closes #139 and #156.

@bbangert, @jrconlin r?
Yes, both [`Balancer`](https://github.com/mozilla-services/pushgo/blob/feature/shutdown/src/github.com/mozilla-services/pushgo/simplepush/etcd_balancer.go#L65-68) and [`Locator`](https://github.com/mozilla-services/pushgo/blob/feature/shutdown/src/github.com/mozilla-services/pushgo/simplepush/etcd_locator.go#L49-51) have a new `CloseDelay` option that specifies how long `Close()` should wait after deleting the host from etcd. It defaults to twice the refresh interval. I decided to make it a separate value instead of a multiplier so that we could tune it independently.