[446947] Adds support for three-way merging multi-line String attributes

Changes applied to String attributes, which might for instance contain
multiple lines of code in a model (e.g., OpaqueBehaviors in UML), will
now be checked whether concurrent changes in the context of a three-way
diff are mergeable using a three-way line-based merge algorithm. If yes,
no conflict will be raised and they will be merged line by line.

Therefore, this commit introduces a copy of the diff_match_patch class
R106 and a ThreeWayTextDiff utility, which extends the capabilities of
diff_match_patch to support three-way diffing and merging of text (as
opposed to two-way diffing only).

Bug: 446947
CQ: 8824
Change-Id: Ifc7a3144461f7d47750b90a8098d565279ee826d
Signed-off-by: Philip Langer <planger@eclipsesource.com>
[448464] Source list incorrectly determined when undoing changes

When computing the insertion index during a three-way merge of a change
that affects multi-valued features, the source list of a diff was
incorrectly determined in DiffUtil#getSourceList(Comparison comparison,
Diff diff, boolean rightToLeft) if the current merging undoes a change. 
With the current fix, the source list is obtained from the _target
container_ retreived from the _match in the origin_, as opposed to the
list obtained from the _match in the origin_.

The commit also updates the tests that are reaching the now modified
code.

Bug: 448464
Change-Id: I3c53b9ff533b1466d5fddce5f91f5b6de38d9fe8
Signed-off-by: Alexandra Buzila <alexandra.buzila@gmail.com>