Support for zero downtime restarts

This uses tablecloth[1] to add support fo reloading the application
without dropping any requests.  The restart will additionally pick up a
new version of the binary if it has changed (ie when deploying)

This has involved switching to use a sync.WaitGroup to block the main
process once the servers have started.  Tablecloth requires that the
main process exits once all the ListenAndServe calls return.

[1] http://godoc.org/github.com/alext/tablecloth
Merge pull request #80 from alphagov/seamless_restarts

Support for zero downtime restarts