Supervisor module and state improvements

Supervisor module
* Support running supervisor from a virtualenv/custom path
* Support custom supervisor config file
* Create integration tests using a virtual environment (mentioned in issue #2026)

Supervisor state:
* Fix restart when process is currently stopped (issue #5296)
* Support restarting a service using a watch
  * The restart option probably should be depreciated
* Create integration tests using a virtual environment (mentioned in issue #2026)