Get specs working with Ruby 1.8.7

We still want to support 1.8.7 for the time being (so that Overcommit
will "just work" on the Ruby versions included in older Mac OS X
versions).

Fix some specs which were failing due to non-1.8.7 compliant code.

Change-Id: I272f6afe4696f166b72e44fb630ecdef472f9850
Move overcommit-hook into template directory

In preparation for adding support for specifying a git template
directory, move the `overcommit-hook` master hook into a `template-dir`
directory.

Change-Id: If1ff4223140f81af4b71a9b7ef9002a975a5c477
Require rubygems only if running Ruby 1.8.7

Change-Id: I870767ae78196efcb2350e250a318a084e11b18e
Add template directory command line switch

Add a switch which results in Overcommit printing the path to a template
directory that can be used to automatically install git hooks any time a
repository is created or cloned.

A simple way to tap into this functionality is to set the
`GIT_TEMPLATE_DIR` environment variable to the result of this call, i.e.

    export GIT_TEMPLATE_DIR=`overcommit --template-dir`

This makes it even easier to use Overcommit for all git projects.

Change-Id: I55aa3f2e33d4f2d476d6e3428c5a8bc57014d301
Save/restore unstaged changes before running hooks

Add support for "hiding" unstaged changes to files before running the
hooks against them. This prevents the situation where unstaged changes
would cause hooks to fail, but they shouldn't because they are
unchanged.

Previously, Overcommit accomplished this by copying staged changes to
temporary files and then running checks against those files. The problem
with this approach is that it breaks the functionality of tools which
perform certain checks based on filename/path. Since the temporary file
will not share the original path, the tool doesn't work as expected.

By stashing changes to the file instead, the path/filename remains the
same, but we still get the benefit of hiding the unstaged changes.

Change-Id: Id1d39d47be4be7348c4126a6d6793506605e8149
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.
Remove unused check-gemfile script

The `BundleCheck` post-checkout hook works without this script, so it
can be removed.
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.