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.
You should try this too, but I think argparse will handle this for you

**scratch.py**
```python
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--foo")
parser.add_argument("-b")
print parser.parse_known_args()
```

```
$ python scratch.py -b yes
(Namespace(b='yes', foo=None), [])
$ python scratch.py -b yes --foo no
(Namespace(b='yes', foo='no'), [])
$ python scratch.py -b yes --foo no hello
(Namespace(b='yes', foo='no'), ['hello'])
$ python scratch.py -b yes --foo no -- hello
(Namespace(b='yes', foo='no'), ['--', 'hello'])
$ python scratch.py -b yes --foo no --another hello
(Namespace(b='yes', foo='no'), ['--another', 'hello'])

```