Switch to using ScalaInstallation everywhere
Create preference page
lints the Scala Installation switch
Implements updateable, serialized Scala lib/compiler containers

Plugs in a list for Add Scala Library/Compiler
Fixes #1001777
Implements update of Scala Library Container based on SourceLevel
modularize ScalaInstallationUIProviders
Initialize classpath container to the desired source level even if no available save

Better portability of Scala projects
Side-effect: modularizing container computation.
Tests sourcelevel & classpath containers.
Don't add a library container to a project that does not have one.

Make classpath container serialization work per-path.
don't enable Adding just yet
Some more validation for unresolving containers
Tighten serialized container usage

Only favor saved Classpath Container when it conforms to freshest desired source level resolution
Finish cleanup of removed extraction refactorings

This cleanup should already have happened in 1eb07fe0dfcd, but some
entries were forgotten. This led to exceptions on startup of the IDE.
Merge pull request #728 from sschaef/cleanup-extraction-refactorings

Finish cleanup of removed extraction refactorings
Removes serialized container support
Support for showing variable values in hovers when in suspended debug
mode.

The hover shows values when hovering over local variables & class
fields. Care has been taken for the hover to never show wrong values
upon hover (the automated tests test this), although, I cannot rule-out
possible bugs.

Some implementation details:

 * The sdt.core project now exposes a new extension point
   (scalaHoverDebugOverride) that allows its text hover to be overriden
   by a plugin. The sdt.debug project provides an extension for this
   extension point.

 * The main logic of this commit is implemented in the
   StackFrameVariableOfTreeFinder.find() method. This method takes an
   ast node (compiler.Tree) as input and (if possible) returns the
   IVariable from the stack frame that corresponds to the given ast
   node.

 * Once an IVariable is sucessfully found, it is fed to the
   presentation component that is used internally by the jdt, which
   presents complex objects in a tree with collapsible sub-trees.
   Whenever an IVariable is not found, the existing implementation of
   text hover (the one before this commit) is used.

 * Some hacks are employed in the implementation (e.g. looking for
   stack-frame variables that are named '$this' or '$outer').

 * The ScalaDebugger class now also keeps track of the currently
   selected stack frame.

 * A test case exercises the StackFrameVariableOfTreeFinder.find()
   function.
Merge pull request #729 from skyluc/wip/pr/718

Scala Installations support
Indent multi line string literals based on Scala preferences

In the case that smart indentation is disabled, but the insertion of
tabs is enabled, a Java preference was considered.

Fixes #1002167
Merge pull request #716 from pmellati/variable-values-in-tooltips-in-debug-1001732

Showing variable values in hovers when in suspended debug mode
Disable tab to spaces converter of `TextViewer`

There exists a `TextViewer#setTabsToSpacesConverter` method, which sets
a converter each time the Java preference in "Java -> Code Style ->
Formatter -> Edit -> Indentation -> Tab policy" is changed. This does
not work together with the Scala IDE auto edits, which need to know if a
tab was pressed to handle it in the right way.