[514415] Relationships between diffs should be cached

Add an interface for diff relationship computers that are able to
calculate diff relationships and provide two implementations:
- Standard implementation replacing MergeDependenciesUtil methods.
- Caching implementation keeping the results until invalidated.

The computers are usable whenever diff relationships are calculated.
Either an explicit instance is provided or the standard implementation
is used as fallback:
- ComputeDiffsToMerge calculates the order in which diffs are merged.
- BatchMerger propagates to ComputeDiffsToMerge.
- DependencyData finds required/rejected diffs for selected diffs.

The instances are created in two scenarios:
- The resource mapping mergers create their own caching instance and
invalidate the cache after performing their operation.
- The EMF SMV creates its own caching instance for the UI, stored in the
EMFCompareConfiguration and invalidates the cache when another
comparison is used.

Includes tests.

Bug: 514415
Change-Id: Id2a56db00b6ca80db2602b3f207377e72a9d80b8
Signed-off-by: Martin Fleck <mfleck@eclipsesource.com>
31 files changed