streamlined editor refresh on command changes;

extracted command range calculation from TheoryViewerAnnotations to CommandChangeHelper;
avoid spanning jobs and instead try to get a faster notification;
workaround for possible race condition in AnnotationModel (asyncExec invalidateTextPresentation after everything)
no longer needed - obsoleted by CommandChangeHelper
"empty range" means no annotations/markers, not "full range"
Merge branch 'refresh-tuning'