Implemented abstraction layer for Grit

@bartkamphorst and I have just finished the first version of the git abstraction layer for gollum-lib. It replaces all direct calls to Grit from the gollum-lib code base with calls to the new Gollum::Git module (with some minor refactoring). These changes to gollum-lib depend on two other new repositories, which are for now located here:
* https://github.com/repotag/gollum-lib_grit_adapter/ (implements the actual abstraction layer with grit calls)
* https://github.com/repotag/gollum_git_adapter_specs/ (generic test suite for different adapters, for example for [Rugged](https://github.com/libgit2/rugged) or [RJGit](https://github.com/repotag/rjgit/) implementations)

Ideally, before merging this PR, we would host these repositories under the gollum organization and change the require paths accordingly.

As of now, we can run a local copy of gollum using this version of gollum-lib with the grit adapter. Basic functionality seems to be working fine. However, will need your help to check for edge cases. There does not seem to be a way to be absolutely sure that we have implemented all the required methods in the abstraction layers other than testing, so please check it out and tell us your ideas about how to continue.

This PR constitutes a first step towards developing alternative adapters, allowing us to move away from grit altogether (see #16).
what exceptions does this raise when the path is invalid/doesn't exist?