Move Private stuff to Private/ directory
Refactor handling private classes

This huge commit removes the Internal::GitPtr<> template and substitutes
it with the QExplicitlySharedDataPointer<>. All GitWrap classes now have
a common base class. This allows us to remove all but one friend
declarations, which in turn should improve the binary code a lot on
modern compilers.

Further, this allows us to access the private class of an object
internally, if we want to.

This commit also introduces a pair of macros GW_D and GW_CD to get
access to a writable or readonly d-pointer, because the real d-pointer
is now in the Base class and is not typespecific anymore. In addition to
that, this commit introduces a set of testing macros: GW_CD_CHECKED and
GW_D_CHECKED which query the d-pointer _and_ check for !result and !d in
one step. These macros reduce the code size drastically.
Test Data generators
Test infrastructure
Merge pull request #39 from macgitver/sc/refactor

Refactoring some GitWrap internals