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.