Refactored 3 way diff and merge out into a package of its own which is
agnostic of what it diffs and merges