[512677] Long delay to calculate synchronization

The calculation of the dependencies for a specific resource is called
several times and may be very expensive, e.g., the existence check on
the remote side may lead to a file traversal of the complete repository
and recalculation of the hashes. Therefore, we need to reduce the number
of calls to the dependency providers:

- Add check to see if we need to schedule a resource resolution before
we do the dependency calculation in the resolver classes. These classes
are called during proxy creation and for local model resolution.

- Add cache for dependencies in the resolution classes that are created
anew when we compute a logical model or when we create a synchronization
model as part of a new comparison scope. The caching cannot be done in
the ThreadedModelResolver or its resolution context, because they are
only created once when the EMF Compare UI plugin is started, so the
cache would not be updated properly.

Additionally, we cache the existence of remote resources in the URI
converter to reduce the number of expensive existence checks. The URI
converter is created for a new resource set when we resolve the remote
traversal or need to find additional remote resources and it is disposed
with the resource set after the operation is done.

Includes tests.

Bug: 512677
Change-Id: I12939430714678ffa9bc27a7b5a1c22dddd2e2b3
Signed-off-by: Martin Fleck <mfleck@eclipsesource.com>
10 files changed