move supervisor stuff into a model, support restarting worker processes

- move supervisor client stuff into its own model to allow for reuse
- add new restartworkers method to restart one or all worker processes on a particular instance