Introduce GitCheckoutOptsWrapper

This is a class to manage lifetime of managed objects references by native git_checkout_options struct.
Refactor "GenerateCheckoutCallbacks" to "From"
Teach Merge ability to control what is checked out for file conflicts.