Prefer git_patch_print to git_diff_print

This has the nice side effect of allowing binary changes
to be detected.
Update error categories to match libgit2
Deploy Proxy.MarshalAs<T> more extensively
Introduce marshaling extension to IntPtr