Disable MigrationPreferenceInitializer in UI less environment

This commit prevents possible exceptions that are thrown in an UI less
environment like the test suite because this component relies on UI
classes.
Ease condition to show only tooltips in code completion

On constructor completion only the tooltip, which shows the name of all
the parameters that need to be inserted, should be shown. This may not
be the best behavior but this is how it works at the moment. The
condition that checks this can safely abort the whole method that should
insert the actual completion because there is nothing to insert.
Ease completion proposal logic
Move most non UI logic out of ScalaCompletionProposal

This contains no functional changes, it only introduces new methods.
Removal of unnecessary adjusting of cursor position

It turned out that in the completion proposal logic the whole logic to
adjust the cursor position is unnecessary because it can be done
together with applying the text change.

Furthermore it turned out that the dependency to the selection provider
can be removed as well because the text viewer which is needed and
provided by the selection provider is already passed to the completion
proposal.
Split up last mixed UI/Non UI parts in ScalaCompletionProposal

The logic that computes the text that should be inserted into the
document is now completely independent from the UI which means it is
possible to test the behavior of the code with our test suite.

The only functional change this introduces is that the method

    editor.selectAndReveal

is no longer implicitly called by

    EditorUtils.applyChangesToFileWhileKeepSelection

It is not necessary to call this method because there is no selection
kept after a code completion, only the position of the cursor needs to
be tracked, which is already done by

    EditorUtils.applyChangesToFile
Reorganize content of ScalaCompletionProposal

- The last Non UI related stuff is moved out
- Private members are moved to the bottom of the class
- Private fields are moved to the top of the class
Refactorings in auto edit strategy test suite

The new design is more flexible and allows the addition of text
edit operations by the subclasses.
Add compiler support for text edit test suite
Add tests for completion overwrite feature
Move accessibility tests to new completion test suite

The only functional change is that the previous `normalizeCompletion`
method is no longer applied. This shouldn't be necessary because a
string representation of a completion proposal should be clearly defined
and therefore not change between Scala or scalac versions.
WIP