FastForward merge should block if there are checkout conflicts.

Currently, if there are changes in your working directory and
a fastforward merge would update those files, the checkout
that is performed as part of the fast forward will skip over
these files. This change fixes and adds regression tests around
this behavior.

Originally, we needed to pass in the `GIT_CHECKOUT_ALLOW_CONFLICTS` flag for the merge calls, but this flag should not be passed in during the fast-forward update. There have been updates for libgit2 since this was originally implemented where this flag should not even be passed to the merge calls.

/cc @ethomson