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