Update Checkout and Merge options

Checkout methods now use CheckoutOptions

Merge now takes several options:
  - Option to specify what is checked out for file conflicts.
  - Report CheckoutProgress and CheckoutNotify
  - Option to specify MergeFileFavor

Updates for code review feedback
Ensure strings are absent of extra zeroes
before reaching libgit2.