Minimise diffs by trying to keep the statement identifier when for identical ID identifiers
When Wikibase presents a diff, it aligns values with the same statement identifier. Currently the only case where the statement identifier is kept is when only the rank is changed (example for P22 (identifiant id DILA)), and as a result most changed values are presented in a hard-to-read diff (example for P39 (état)).
It makes senses to keep statement identifiers more or less aligned with ID identifiers, which is the unit in LEGI database. This issue could possibly be solved together with #1.
There could exist race cases where a given value (v1) for some id (id2) changes from this existing value (s1 := v1 with id1 and id2) to another existing value (s2 := v2 with id3). In this case, I guess the result should be (s1 := v1 with id1) + (s2 := v2 with id2 and id3) and the diff is s1 -= id2, s2 += id2. The other solution is (s1 := v2 with id2 and id3) + (s2 := v1 with id id1), but the diff would be larger and is harder to understand: s1 -= v1, s1 += v2, s1 -= id1, s2 -= v2, s2 += v1, s2 -= id3.