Merge upgrades

This pull request addresses issue #65

Added support for commit messages (-m) and fast-forward only enforcement (--ff-only) to git merge.
In attempting to create that assertion I discovered an oversight in my planned change.  You can specify a commit message in a merge but the commit message will only be applied if a merge commit results; a fast-forward merge would disregard the provided message.  This isn't necessarily a bug; the same behavior exists in git.  But it seemed to me as I thought about it that if the user provides a message, the method ought to force the merge into 3-way mode (--no-ff) to ensure that the commit message is recorded.

However, that leads me to thinking that I should change the way the fastForward flag works, since it's now a setting with three possible values: force FF, force 3-way or automatic.

Not an insurmountable problem, and if I'm providing a way to force an FF merge it makes sense to provide the option to go the other way too.  So my questions for you are:

1) Should providing a commit message force you into 3-way mode?
2) If you provide a message and specify FF only, should the method throw an exception?
3) Is there a convention in place already for a similar three-value setting anywhere in GitElephant, or do you have any preferences on how that's handled?