Fix compilation for libgit2 0.19.0
Implement support for branch handling.
Use a mixin template for the ref counting boilerplate code.
Implement support for blob handling.
Implement revwalk support.
Bump version number and accept libgit2 0.20.x.

The new version number is chosen to be above the original libgit2
version numbers. Any packages that have a ">=0.19.0" dependency
will need to be adjusted for the new API with the separate libgit2
bindings.