Some major bug fixes.

- SshSlaveController implements it's own Future instead of using ExecutorService.
- RemoteJenkinsController.dissagonose() is implemented to help debugging due to error conditions
- JenkinsProvider should not be injecting Machine, MachineProvider is used instead. This is so that
  Machine.close() cleans each machine separately.