Extract printing concern from HookRunner into helper

The `HookRunner` class was the largest class, and arguably one of the
most complicated.

An obvious separation of concerns was the flow of events versus the
printing of output to the user. A solution was to separate the printing
into a separate helper class which the `HookRunner` could just send
messages to when certain events occurred.

It's a bit crude since we're still passing a few parameters here and
there that should probably be encapsulated in separate objects, but this
already provides us some benefit in terms of reducing the size of the
class. We also should probably consider having the printer passed to the
`HookLoader` implementations as well, but right now things still work
and this is something that can be shipped.

Change-Id: I93c639b69e4d468ac1766cf86599c413d6c482eb
Reviewed-on: http://gerrit.causes.com/40459
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane.dasilva@brigade.com>