I've moved the logic for each "runner" out into a separate class, but I'm not sure the abstraction is quite right because it still has the inherent problem is having a switch to call the right class and the classes themselves aren't exactly DRY. They do the same thing with slightly different logic around the outcome of the commands and such.

What do you think about doing something like:

```
:puppet_runner: mcollective
```

or

```
:puppet_runner: puppetrun
```

in settings.yaml and we can just load the right class out of the box instead of having to build real control structures?