Move auto edits to `AutoEditExtensions` companion object
Remove `TextViewer` self reference from `AutoEditExtensions`

It turned out that this dependency makes it more complicated than it
should be. The text viewer should handle all changes by itself, the auto
edit logic should just tell him what to do.
Add functionality to enable auto edits only for configured partitions
Add `lineInformationOfOffset` + tests to `Document`
Handle the case that an auto edit doesn't return a text change

If no change is returned the already existing text change needs to be
used.
Add `SmartSemicolonInsertion` auto edit

This auto edit always moves the semicolon to the end of the line unless
the cursor is inside a for comprehension - the only place in Scala where
the usage of semicolons is a syntax feature.

The "auto insert braces at corret position" feature of the Java editor
is no longer supported by the Scala editor because there are very few
cases where this feature really makes sense. Most of the time one can
use a template to generate code where the opening brace is at the
correct position.

Fixes #1002056
Implement smart backspace functionality for auto edits
Implement `toString` method for `TextDocument`
Remove `SmartSemicolonAutoEditStrategy` from SSVC

This auto edit strategy is replaced by the `SmartSemicolonInsertion`
auto edit.
Add `Remove` operation to `AutoEditTests`

This allows to write tests that check if the removal of text works
correctly.
Add `CloseCurlyBrace` auto edit

This auto edit is partly a replacement for `BracketAutoEditStrategy`.
Add `lookupChar` function to `AutoEdit`

This function may be useful to write the auto edit in a DSL style.
Add `JumpOverClosingCurlyBrace` auto edit

Another step towards replacing `BracketAutoEditStrategy`.
Add `RemoveCurlyBracePair` auto edit

This completes the replacement of `BracketAutoEditStrategy`.
Remove `BracketAutoEditStrategy`

Its functionality was replaced by the auto edits `CloseCurlyBrace`,
`JumpOverClosingCurlyBrace` and `RemoveCurlyBracePair`.