Ignore GIT_TEMPLATE_DIR environment variable in specs

Explicitly specify the template directory as an empty string in specs so
that Overcommit spec runs aren't effected by the `GIT_TEMPLATE_DIR`
environment variable.

Change-Id: Idd79324355c777254584a28ee7c8f22db295d2e3
Remove unused check-gemfile script

The `BundleCheck` post-checkout hook works without this script, so it
can be removed.

Change-Id: I7bb48b78187a04b88d257c05f864d3f87f46fece
Split Whitespace check into HardTabs and TrailingWhitespace

This will make the check more specific, and give users greater control
over which checks they can disable.

Change-Id: I4b9353e26f8dcf8b4c07376aaf3c86a8f33932e1
Remove old plugins directory

The two hooks still in here will be ported to their respective
repository, as they are not workflow-specific.

Change-Id: Ic1a16d808bfb8326dca601f8859b005453c0e5eb
Add BundleCheck pre-commit hook

Add a hook that checks that a `Gemfile.lock` matches the given
`Gemfile`/gemspec, similar to the `PostCheckout` `BundleCheck` hook.
They are meant to compliment each other.

Change-Id: I34e9cbcc58bb873d20a74bfa62b25ff1671bbe95
Disable IfUnlessModifier in Rubocop config

This is really noisy and not that useful, especially when the one-line
body of the if/unless is very long.

Change-Id: Iaed16dfb0e8c89997784b5b7c1b15ec0e2e9f8f8
Disable AssignmentInCondition check in Rubocop config

This check was noisy and goes against a style we employ rather often.

Change-Id: Ic090e973cae580b9e9baf900df77fc240230b62b
Add JavaScript code style checker

Add pre-commit hook that runs modified JavaScript files against `jscs`.

Change-Id: I9c4322f2c81c50842ca8345916be9f5a0a3c2d4f
Merge Reporter into HookRunner

The `HookRunner` and the `Reporter` class were initially separated to
try and decouple the logic of displaying results from the logic of how
to run the actual hooks.

Unfortunately, these two concepts are tightly-related. For now, merge
them together.

Change-Id: I6f284c0fdf4a619c91ede53e04c06f3445d1d4c4
Fix plugin loading

Fix loading of plugins from the plugin directory.

In the process, change the default plugin directory name from
`.githooks` to `.git-hooks`. This will make migrating existing
repositories a bit easier since they'll be able to support plugins for
both the old and new Overcommit during the transition period.

Change-Id: I88c9573883e7b116c362dee03077cc715862019f
Allow updating commit message in commit-msg hooks

Add a helper `update_commit_message` to provide a standard interface for
updating commit messages via commit-msg hooks.

Change-Id: If7707b842db38460c1ae3d495543aca02a6326a4
Allow hooks to be skipped with SKIP_HOOKS env variable

`SKIP_CHECKS` was the old form, and `SKIP` is the preferred new form,
but it is likely that new users will try `SKIP_HOOKS`, so add support
for it.

Change-Id: Ie03c62fc68366de42113282d07560af00e695acc
Add post_install_message to gemspec

This will remind users to install Overcommit in their git repository
after they have installed the gem.

Change-Id: Ife948c194c1acdc4ae9361ef75d19e4988c5aadc
Update gem authors and emails

I've put a hefty amount of work into this project, and I don't think
anyone's going to mind me mentioning that.

Change-Id: Ifc07bac3e7fbf1168a6fde2272ac27d43ca808c4
Reopen STDIN when Overcommit isn't installed

Git hooks are not run in an interactive context, meaning STDIN isn't a
TTY and so we can't read user input.

The solution to this is to reopen STDIN to manually wire up a TTY.

Change-Id: Ia12c5cceba26d95313bdf1b1f9d271ef3a421248
Reset gem path after installing Overcommit

When running the Overcommit hook when Overcommit has not been installed,
the user is asked to install it. However, after installation you could
not load the `overcommit` gem since the gem path was already cached.

Fix this by resetting the gem path.

Change-Id: I868edd68ef4603610faf3d8f98f648f2691dfe38
Display better error when unable to install

When attempting to install Overcommit as part of running the hook, we
didn't give an informative error if for whatever reason this install
failed.

Improve the error message and change the exit status to follow the
`sysexits` standard.

Change-Id: I91fe79932a93cc9df5a7568fd223287c956e0f27
Report error when unsupported Overcommit installed

For users that are already running an older version of Overcommit,
they'll get a weird error if they somehow install the new hooks on their
machine and attempt to run them.

This solves this problem by reporting a helpful error message if the
version of overcommit that was loaded is less than a particular version.

Change-Id: I6fa26c05e0224daffc0d0909bff0d11b91506094
Use REPO_URL constant for gemspec homepage

This reduces code duplication.

Change-Id: Id32cbee7b265939ff3477c07d65192fc860aa0f3
Update README

After all this wonderful refactoring, the README was completely lacking
and out-of-date. Update it to include most of the new goodies included
with Overcommit.

Change-Id: Ida62192ad2c8cd6292c527368a3bd8ff6bfe2bb9