Use cluster.disconnect to gracefully shut down

- http://nodejs.org/api/cluster.html#cluster_cluster_disconnect_callback
  stops listening for new requests, disconnects workers and only exits the
  master when that is done
- Disconnected workers finish the request they are working on, but don't block
  the listen socket (no failed requests during restart). They exit after
  finishing the request.
- New workers can start up right after the master has exited without
  interference by other workers

This will both improve the user experience during restart and will also
hopefully fix the restart issues we have seen with upstart in production.

Tested with concurrent requests to Obama.

Change-Id: I600d5666e7f22b6efd09010cbd391850333fb74d