Remove `return` keywords from `MigrationPreferenceInitializer`
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.
Switch to the Sbt transactional classfile manager.

This involved moving away from the Java interface for passing inputs to
Sbt, since it didn't support passing true IncrementalOptions. This PR
mimics what Zinc is doing.

A couple of cleanups:

- no more pendingSources (it was a workaround the missing transactional feature)
- clear all problem markers when building a project. Until now we removed when each
file started compiling, but Sbt is guaranteed to issue all errors for
a given project. This way we don't have *stale* error markers (a file that
shouldn't have errors, but wasn't recompiled by Sbt).

Fixed #1001953.
Merge pull request #675 from sschaef/t-non-ui-save-migration-manager

Disable MigrationPreferenceInitializer in UI less environment
More explanatory comments, thanks @gkossakowski!
Merge pull request #679 from huitseeker/pr/670

Use Sbt transactional classfile writer
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.
Move some completion test cases to new test suite

- Simplify CompilerSupport in TextEditTests. It turned out that most
  behavior is already defined in SDTTestUtils. The new implementation
  is also more correct as it turned out while implementing tests. The
  previous implementation created a ScalaSourceFile directly, but by
  doing this it is not correctly wired together with the compilation
  unit. Creating a compilation unit directly creates also a
  ScalaSourceFile implicitly which can then be used later in the test
  implementation.
- Some test cases are moved from core.completion.CompletionTests to
  core.ui.completion.StandardCompletionTests. For this move the test
  cases where simplified a little bit. They no longer check the internal
  representation of a copmletion proposal but how the completion is
  displayed to users and how the document is changed after the
  completion is applied.
Move more completion test cases to new test suite

All test cases that belong together are moved to the new test suite.
This does not include ignored tests that test behavior which is not
implemented yet. It does also not include tests that mostly test a
different part of the completion behavior. It turned out that #1001014
can be closed because it is fixed.

While writing these tests the new test suite had to be extended further
times. Nevertheless, there are still tests that can still not be
implemented with the new test suite - therefore these tests aren't moved
either.

Re #1001014
Create new parameter completion tests

At the moment all tests are still disabled and therefore the old ones
are not yet removed. This is because the behavior is only insufficient
implemented.
Apply reviewer comments

- Change `IllegalArgumentException` to `ComparisonFailure`
- Move `caretOffset` from `TextEditTests` to `Operation`