Patch application

This PR is attempting to take an initial bite out of patch application, a la `git-apply`.  My goal is to parse a git-style patch file created with libgit2 or git.git into a `git_patch` and be able to apply a `git_patch` to a buffer.  This does not yet open up any public API for application, just internal methods; I was hoping to get some eyeballs on this and perhaps even merge it before I did something like applying patches into the working directory.

Things left todo:

- [ ] Binary patches
- [ ] Traditional-format patches (should just need to parse their headers)
- [ ] Improved whitespace tolerance during application
- [ ] Context reduction during application