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
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
Merge pull request #716 from pmellati/variable-values-in-tooltips-in-debug-1001732

Showing variable values in hovers when in suspended debug mode