Bug 121623 [Decorators] Patch to support logical model decoration
In order to properly support the decoration of logical model elements with repository state, we need to have a tighter coupling of the sync decoration (i.e. the > prefix) and the viewer showing the model. This is not overly complex but we must maintain backwards compatibility. To do this, we need a way for a viewer (via it's label provider) to say that it will handle the sync decoration. If the label provider handles sync decoration, the lightweight decorator should not. If the label provider does not, the lightweight decorator shoudl still do the decoration. To support this, I have modifed JFace and Wokbench to pass a decoration context from the decorating label provider through to the lightweight decorators. I will attach what I have done so far for comment.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/DecoratingLabelProvider.java
* decorated with the decoration provided by the label decorator's
     * <code>decorateText</code> method.
     */
    public String getText(Object element) {
        String text = provider.getText(element);
        if (decorator != null) {
            String decorated = decorator.decorateText(text, element);
            if (decorated != null) {
                return decorated;
            }
        }
        return text;
    }
    /**
     * The <code>DecoratingLabelProvider</code> implementation of this 
     * <code>IBaseLabelProvider</code> method returns <code>true</code> if the corresponding method
     * on the nested label provider returns <code>true</code> or if the corresponding method on the 
     * decorator returns <code>true</code>.
     */
    public boolean isLabelProperty(Object element, String property) {
        if (provider.isLabelProperty(element, property))
            return true;
        if (decorator != null && decorator.isLabelProperty(element, property))
            return true;
        return false;
    }
    /**
     * The <code>DecoratingLabelProvider</code> implementation of this <code>IBaseLabelProvider</code> method
     * removes the listener from both the nested label provider and the label decorator.
     *