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.

Checkout Index:

- [x] `git_checkout_index` can write the conflict data in the index to the working directory like core git does.
- [x] Handle `GIT_CHECKOUT_UPDATE_ONLY`
- [x] Make sure that `foo~HEAD` and friends will never overwrite an existing file
- [x] Get rid of some quick & dirty TODOs.
- [x] Tests for checking out with rename conflicts
- [x] Make sure path filters work when checking out conflicts
- [x] Make sure progress callbacks are fired when writing conflicts
- [x] Move conflicts back into `checkout.c` because this split has become silly.

~~Checkout Tree~~

~~`git_checkout_tree` merge capabilities to create conflicts (in the index) from conflict data~~

Unfortunately, `git_checkout_tree` does not simply create conflicts in the index then check them out.  It will reuse much of this code, but will require additional new logic, and I think should be considered separately from this concern.