Move `require's to where they're actually needed

E.g. in the checks that actually need the things, so we're not requiring
code if the user wants to skip these checks.

Change-Id: Ieb4e4b9b0b433240cf85b0b60ad770cfa05fb02e
Reviewed-on: https://gerrit.causes.com/22362
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>
Extract `Reporter' class

Slimming down classes, separating concerns. Next step is to get all
'puts'-ing out of the GitHook class.

Change-Id: I21b91f4a7c020e33354c197f75d97c9611061d05
Reviewed-on: https://gerrit.causes.com/22363
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>
Extract more printing logic into Reporter

`GitHook` is no longer printing anything from inside the class (except
for load errors). This significantly simplifies #run.

Change-Id: I51aba00b2c45d1b33a643637ae43006b150ed55c
Reviewed-on: https://gerrit.causes.com/22374
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>
Move hook registration to Utils

This didn't belong in the 'GitHook' module, leading to some awkward
asymmetry when loading/running hooks.

Change-Id: I95f6660e200fde95918d10ff106c086051317c0a
Reviewed-on: https://gerrit.causes.com/22376
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>