WIP & RFC: Libgit2 smart wrapper

We have lots of code just dealing with git_*_free in case of error handling, so I thought if we should wrap the libgit2 references and rely on destructors.

* I'm not sure about the performance impact of this, at least for repository, commit, index and tree it could be easily used - in RepositoryBrowser for git_blob/git_object we should consider to stick to the direct libgit2 unwrapped functions
* Also in TGitCache this is not necessary for all cases, since we don't have lot's of error handling there, same applies to git_config handling in BrowseRefsDlg?!
* I'm also not sure if we should create a GetRepository method in CGit (this way we would be able to open the repository just once or reload it after a amount of miliseconds has elapsed) - generally this isn't really related to this RFC
* What to do with git_strarray and git_buf?