Improve the robustness of the deployment via a few methods:

- add retry logic for starting the master process
- shutdown existing slave services before the master service
- log an error when 'clusterrunner stop' fails
I'd think that there is no reason to not mock out the sleep call as well. However, I worry that sometimes it's a part of the test to assert that the sleep function get called, and the writer of the test might get some sort of error complaining that this method has already been patched.

Does patching over already patched functions work?