Introduce GitCheckoutOptsWrapper

This is a class to manage lifetime of managed objects references by native git_checkout_options struct.
Refactor "GenerateCheckoutCallbacks" to "From"
Expose strategy specifying what checkout writes to disk for file conflicts.