Update usage of diff APIs

I might be doing this wrong, but it appears that the method libgit2sharp is using for generating patches is incorrect. This PR aims to simplify the usage of native diff apis so as to close this gap.

- [x] Write failing tests
- [x] Use `git_diff_patch` for `Patch`'s content