Add Installer to perform installation

This writes a repo-specific 'overcommit.yml' based on a combination of
the specified template (or the 'default' template) and the command-line
specified 'exclude's.

The last piece of the puzzle is to make the hook runner respect this
YAML file.

Change-Id: Id7d78bbf7141d75bb75fde8fe796623ab15d6530
Reviewed-on: https://gerrit.causes.com/22695
Reviewed-by: Aiden Scandella <aiden@causes.com>
Tested-by: Aiden Scandella <aiden@causes.com>
Remove symlink trickery from BaseHook

Symlink'ing was fine for an internal-only installation, but going
forward the class definitions are all going to live inside the gem
(require'd from the individual hooks).

This makes the code easier to read and understand.

Change-Id: I8aec1a79885afd0452420a870b76ef38b5cc50e7
Reviewed-on: https://gerrit.causes.com/22712
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Greg Hurrell <greg@causes.com>
Reviewed-by: Joe Lencioni <joe.lencioni@causes.com>
Make Haml syntax checker lazy-load haml gem

Similar to scss-lint, only load the gem if the repo contains modified
'.haml' files. This makes it so that people can leave this hook
installed but dormant unless they're actually working on Haml files.
Prior to this commit, they'd get a warning about the gem not being
installed.

Change-Id: I3fd7e1a7769983deda1872c8104c6505e4df3014
Reviewed-on: https://gerrit.causes.com/22714
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Greg Hurrell <greg@causes.com>
Reviewed-by: Joe Lencioni <joe.lencioni@causes.com>
Strip out comments before checking release_note

Otherwise the default message (flow inserts a # comment about inserting
changes here) passes the lint.

Change-Id: Id70663d96ea64b34bde9398e578d0932b505172b
Reviewed-on: https://gerrit.causes.com/22725
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Joe Lencioni <joe.lencioni@causes.com>
Skip release_note check by default

Causes will install this with the --all option, not the default
template. This doesn't seem like something the general public
should/will care about.

Change-Id: I0bffb783f440625737a73c78dca10289c7711eca
Reviewed-on: https://gerrit.causes.com/22726
Tested-by: Aiden Scandella <aiden@causes.com>
Reviewed-by: Joe Lencioni <joe.lencioni@causes.com>