Merge(a, o, b io.Reader, detailed bool, labelA string, labelB string) (*MergeResult, error)
* a and b are the current and incoming versions of content
* o is the common ancestor
* detailed specifies whether you want the merge conflicts to be detailed.
* labelA and labelB indicate a label to mark conflicts with, usually the branch names.
Returns a MergeResult that includes a flag indicating whether there were conflicts or not and a io.Reader stream with the result.