Support non-fast-forward merge.

@devoncarew The diff3.js results needs to be addressed slightly. Post that we are very near in supporting merges :)