Updates to get all tests running for version 0.21.0

+ Moved libgit2-types to libgit2-types-grovel and created a new
libgit2-types meant for frequently used types that are not grovelled.

+ Defined git-buf type used to get patches.

+ git_index_add requires the filemode to be set.

+ When creating new references, a signature and log message are now
used.

+ In test diff-working, file-b appears to no longer have a valid UID,
test has been corrected.
Renamed LIBGIT2-CAPABILITIES to LIBGIT2-FEATURES.

Added :ssh feature.
First take at cloning.

Added CLONE-REPOSITORY method as well as the callbacks and classes necessary for authentication.