Always set git user name/email in repo helper

We were having tests fail in some CI contexts due to a lack of
configured user name/email for git. Solve this by ensuring all
repositories using the `repo` helper in specs have a local user name and
email defined.

Change-Id: I69ead11de15e83967a4b85a0091b5845ca8392cd
Reviewed-on: http://gerrit.causes.com/38044
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>
Restore merge state in pre-commit HookContext

If a user was in the middle of resolving a merge conflict, Overcommit
would blow away the state of the merge since it uses `git stash` to save
changes.

This had the nasty effect of resulting in the user receiving the
following error after attempting to commit changes resolving a merge
conflict:

    fatal: could not open '.git/MERGE_HEAD' for reading: No such file or
    directory

The solution is to explicitly check if we are in a merge state before
stashing, record the relevant state, and restore it after the stashed
changes have been restored.

An integration test was added since there's no particularly good way to
unit test this behavior.

Change-Id: I973487f9bbb1a02d41204a52cc5e5c2eaa6e3a63
Reviewed-on: http://gerrit.causes.com/38035
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane@causes.com>