Refactor

This pulls out a bunch of the stuff I had done when adding in VCS support.

The core of this is abstracting logging and command running so that they're more flexible. This should help with the push towards "report more logging"

From a high level this:

- Moves runner.go => cmd.go (with a new minor abstraction that isn't used)
- Adds log.go and the concept of a LogSource (more closely resembles what happens on changes master)
- Minor tweaks to engine.go (make artifact publishing async)
- Various improvements to configuration parsing/tests
- Adds some other data that comes from the jobstep query that is now unused (i.e. source/repo information)