Fix some includes
Allow to set GitWrap specific errors
Convert ObjectType/git_otype additions
Fix part of the const-ness mess
Add internal helper to access a Object's git_object

This helper goes to BasePrivate to be accessible from all GitWrap
objects.
Add setters to set the HEAD
Reference: Add isBranch()
Reference: add peeling references
Reference: Set this reference as HEAD
git_strarray wrapper for external git_strarrays

Fixes #47.
Change use of StrArrayWrapper to StrArray where applicable
Use setAsHEAD() instead of updateHEAD()

setAsHEAD() does actually the same as updateHEAD(), just that it refuses
to set a detached HEAD to a remote branch.
Deleted references cannot be used anymore

Disallow to access a reference that was deleted using the destroy()
method.
Fix return value of Reference::wasDeleted()
Add Repository::reopen()
Object/Reference: Add some nice template magic
Lots of refactoring...

Still trying to make the code cleaner, thus:

- Remove some redundancies.
  While doing that, teach trees to be checked out for themselves.
- Add overloads for some functions that don't actually use Result and
  deprecate the old ones.
- Add an o() method to ObjectPrivate-derivates, so we can avoid the
  C-Style or reinterpret_casting of git_object / git_tree / git_commit.
- try to fix several of our const-ness errors. There a so many of
  them...
Remove Object from class name of Blob, Commit, Tag and Tree
A bigger refactoring

- Provide ObjectXXX.hpp for compat
- Provide private classes for Tree, Blob, Tag and Commit
- Move some checking stuff over to Private classes
- Yet more constness-correctness
- Remove Result from functions that don't use it
- Provide deprecated wrappers
Implement checkout as suggested