Optimize auto formatting

Instead of producing one big text change of the whole file, only the
changed regions are produced. This is not only faster at runtime, it
also doesn't has the side effect of invalidation all annotations in the
editor.
Wrap applying of save action changes in safe runner

When positions with wrong offsets are returned an exception would be
thrown but caught not before the save action invocation unit. The safe
runner catches an exception early and reports an error message.
Add validation logic for save action produced text changes
Add better toString implementation to `TextChange`
Remove perform method from Compiler- and DocumentSupport

They are not needed anymore
Add semanticHighlightingParticipant extension point

This extension point replaces the extension point
reconciliationParticipants, which is based on an deprecated API.

Semantic highlighting participants are called by the Scala editor to
enrich the semantic information with everything the participants
provide.
Remove extension point reconciliationParticipants

This extension point is deprecated and was replaced by
semanticHighlightingParticipants.
Replace Utils.tryExecute with EclipseUtils.withSafeRunner

The tryExecute calls in preference initializers were removed because
they are already executed in a safe environment.
Create only one instance of ScalaDocumentProvider

We need a way to access existing Scala compilation units in several
parts of the IDE. Therefore the document provider is moved to the Scala
plugin in order to act as a compilation unit cache. The Java plugin
works similar and has with the WorkingCopyManager a class that provides
such a cache, but because this class is statically configured in the
Java plugin we can't override with our own implementation.

Therefore, all calls to

    JavaPlugin.getDefault.getWorkingCopyManager.getWorkingCopyManager

need to be replaced with

    ScalaPlugin.plugin.scalaCompilationUnit

We can do these change in our own codebase, but there is the risk that
code inherited from JDT also calls accesses the working copy manager and
in these cases we have to override such implementations in order to get
the code up and running again.
Update BaseSemanticAction.refresh to get Scala compilation unit
Restore breakpoint functionality.

With the introduction of the ScalaDocumentProvider, breakpoints were
gone. This fixes the problem by getting the ScalaCompilationUnit of
the current editor from the ScalaDocumentProvider instead of the
WorkingCopyManager of the Java plugin.
Remove info message about save action
Wrap creation of every file creator in safe runner

This allows to filter out only wrongly configured file creators.
Correct validation in SaveActionExtensions

N where N=document.length is a valid range position.
Configure implicit highlighting with the sHP extension point

sHP=semanticHighlightingParticipant
Wrap save action that has compiler support in askOption call

If we don't execute in on the compiler thread, we can get race
conditions.
Add override keyword in SSFE

The first fix done to our repository by save actions, what a great day!