Add hard tab linter for commit messages

Hard tabs are the devil's work, as their spacing is not well-defined. We
already have a lint to prevent them in regular source code files, so we
should also prevent them in Git commit messages.

This also adds support for setting up the test environment for all
commit message checks by setting an appropriate `before(:each)` block in
the RSpec configuration, and auto-requires all plugins in the
lib/overcommit/plugins hierarchy so they don't need to be explicitly
required in each spec. In order to support this, I had to fix some specs
that did not adequately stub out which hooks were registered.

Change-Id: I21924a4bb432d1b21864a2d290efad5b08e3d7f3
Reviewed-on: https://gerrit.causes.com/23453
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Greg Hurrell <greg@causes.com>