Simple async process supervisor
simpervisor provides the SupervisedProcess class that provides async methods
start, ready, terminate, and kill to manage it. As an example of how it
can be used, see how jupyterhub/jupyter-server-proxy uses it.