Introduce ContentProviders for TreeContentMergeViewer

This refactoring has two distinct goals: Clear separation of concerns in
the code and allowing the user to customize the TreeContentMergeViewer.

Currently the MergeViewerItem serves the dual use of wrapping the
displayed model but is also responsible to determine its parents,
children and stub elements. The later tasks are now separated to
different ContentProviders.

The content of the TreeContentMergeViewer is now determined by
'IMergeViewerItemContentProvider's which can be registered at the new
extension point 'contentMergeViewerCustomization'. The default
implementation uses the existing EMFCompare adapterFactory mechanism to
determine the 'real' and 'stub' content of the TreeContentMergeViewer.
Additionally the new 'ImergeViewerItemProvider's are used to determine
the root elements of the tree, currently provided by the
'ICompareAccessors'.

The new customizations are extensively used within the Papyrus
customizations for EMFCompare.

Change-Id: I5f3cc5143b71ed3f517e427868395a5e14638fea
Signed-off-by: Alexandra Buzila <abuzila@eclipsesource.com>
Signed-off-by: Stefan Dirix <sdirix@eclipsesource.com>
46 files changed