Supervisor

This is the first step towards agent auto-updates. The supervisor
regularly checks if the agent is still running and, if not, restarts it.

If it finds an update in an update drop directory specified on the
command line, it will apply it before starting the agent.

Currently, applying an update just means unpacking a zip file to a
specified location.
General note on signal handlers.  You may want to ensure that within each handler your code will only run once.  I had to do this within the agent so be sure that if a signal is fired multiple times we'll only try to do something once.  This may not be a problem now since we're using subprocess but it might be an issue in the future.