Implemented zero-downtime restart

This forks a temporary child process to take over serving while the
original process re-exec's itself.  Once the parent is up and running
again, it kills off the child.  This means that the parent process
retains its pid, which will keep upstart happy