Remove `EclipseUserSimulator`

All of its definitions were moved to `SDTTestUtils`.
Start implementing AutoEdits
Add preference page for auto edits
Add preference initializer for auto edits
Move common definitions to `SWTUtils`
Check if auto edit is enabled before it is executed
Add copy method and better apply method to `TextChange`

The apply method now creates the best fit text change object and not
only an `Replace` object.
The copy method considers forwards to this apply method to keep the
behavior.
Start implementing the `ConvertToUnicode` auto edit
Add possibility to update cursor to auto edits

This adds a new `Change` object to pass an updated cursor position from
an auto edit to the logic that applies it.

This also adds some syntax sugar for auto edits to operate on the input.

The return type of the auto edit has changed to an `Option` because it
is possible that an auto edit can not be applied. Previously the input
change object had to be returned to describe this situation but
returning an `Option` makes more sense.
Add test suite for auto edits
Add tests for `ConvertToUnicode` auto edit
Enable `ConvertToUnicode` on pasted symbols

Auto edits should be able to react on everything that is pasted into
the editor. If for example the "=>" symbol is pasted, the auto edit can
now handle such an input and convert it to its unicode counterpart.
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`