Merge improvements

- [x] Perform merge simplification to remove non-conflicts (identically changed ours/theirs)
- [x] Do not attempt to write merge files from binary inputs
- [x] Allow merge file type configurability (eg `--diff3`)
- [x] Respect configuration settings for diff3
- [x] Drop the "merge none" flag, since it doesn't do anything and is stupid and useless and should have never been added in the first place
- [x] Add union merge style
- [x] Allow conflicting submodules instead of failing with vague error messages
- [x] ~~Rename `git_merge_opts` to `git_merge_options` (if this doesn't overly conflict with other outstanding PRs)~~