(bug 51363) Fix MapDiffer for equivalent substructs.

When comparing

  array( 'foo' => array( 'x' => 1, 'y' => 2 ) )
with
  array( 'foo' => array( 'y' => 2, 'x' => 1 ) )

the resulting diff should be empty when using recursive mode.
Previously, it would be a single DiffOpChange, like without
recursive comparison enabled.

IMPORTANT: Please backport, this issue can completely disable 
the change dispatcher on wikidata.org! 

Change-Id: I8ddc15d948e7c1cfd91b45577b4901fe620a2cbc
Merge "(bug 51363) Fix MapDiffer for equivalent substructs."