Instead of displaying nothing for a two-parent merge commit, compute
the automatic merge result and display the difference between the
automatic result that Git would create, and the actual result that
was uploaded by the author/committer of the merge.
This allows reviewers to catch fix-ups added by the merge author
in non-merged files, as well as see the conflicts and how they
were resolved.
Files with content conflicts are written out as blobs to the local
object database with diff3 style conflict markers left in place.
Later Gerrit differences the file in the merge commit against this
conflicted blob that is dangling in the local repository.
To prevent the automatic merge result from being deleted by Git's GC
feature, the tree is anchored in the refs/cache-automerge/ space,
ensuring it will stick around throughout the review. This tree
could later be removed and garbage collected once a change closes,
as Gerrit will reproduce it on demand if its missing.
Bug: issue 665
Change-Id: I882cbca602997033761cece8a804f71152075d00