Fix GitObject inheritence

JNA doesn't handle inheritence of PointerTypes quite as expected which
made calls with "this" on the subclasses pass null ptrs to the library
calls.

Now GitObject is a trait which requires the subclass to be of a
PointerType. 'this' now works correctly in the subclasses.

The generic GitObject is not DefaultGitObject.