Introduce git_merge_file for consumers

- [x] Add a `git-merge-file` like API that allows callers to merge files as they exist on disk (that may or may not exist in a repository)
- [x] Add a `git-merge-file` API that allows callers to reproduce the results of checking out a single conflicted file
- [x] Tests!
- [x] Update docs in the headers
- [x] Fancy new struct initializer functions