Checkout methods should use CheckoutOptions
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.
Move method to convert from CheckoutFileConflictStrategy to CheckoutStrategy.
Teach Merge to report CheckoutProgress and CheckoutNotify.
Teach Merge to accept MergeFileFavor option
Teach MergeOptions rename detection.