Checkout merge

It would be great if checkout handled conflicts!  Both when checking out creates a conflict into the index, and writing a conflict to disk when it exists in the index.  Obviously this is not yet ready for merge, but I wanted to add this for visibility.

- [X] `git_checkout_index` can write the conflict data in the index to the working directory like core git does.
- [ ] `git_checkout_tree` merge capabilities to create conflicts (in the index) from conflict data
- [ ] Think about case sensitivity
- [ ] What happens when `GIT_CHECKOUT_UPDATE_ONLY` is specified when writing a conflicting file?  What about when writing a conflicting file that was name conflicted and thus suffixed.
- [ ] Lots more tests
- [ ] Get rid of some quick & dirty TODOs.