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
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.
Don't use Scala reflection for asInstanceOfOpt

asInstanceOfOpt is broken by trying to be too smart. There is no point
in using runtime reflection for subtype checks, since the value on which
we reflect only carries the erased type anyway. Simplified to use
`ClassTag` and documented the behavior.

Fixed #1002128, #1002152
Merge pull request #732 from dragos/issue/fix-asInstanceOfOpt

Don't use Scala reflection for asInstanceOfOpt
Merge pull request #730 from sschaef/t1002167

Disable tab to spaces converter in TextViewer
Don’t reuse platform classloader when ScalaInstallation matches its version.

Remove the optimization that reused the platform class loader when the desired
Scala version matched the one installed in Eclipse. This proved to break due
to OSGi restrictions and the implementation of DelegatingReporter in the
compiler-interface.jar

See #1002175 for details
Merge pull request #733 from dragos/issue/fix-nightly-build

Don’t reuse platform classloader when ScalaInstallation matches its version
Adds a Directory-based Scala Installation subclass
Hooks in Addition/Removal for Scala Installations

Limits custom versions to >= 2.10
Adds a ScalaInstallation serializer helper

Hooked in Scala Installation Serialization
Deals with deserializations, including that of bundles
Hardens scala jar detection in case of multiple suitable jars

Harden against non-binary-compatible {compiler, reflect, ...}.properties
Plugs in ScalaInstallation choices
Container edition triggers Scala Installation choice

Container edition sets the desired scala installation,
updates the compiler settings view from Pub/Sub model.
Rationalizes ScalaInstallationChoice usage
The builder is now explicitly connected to scala desired version resolution
 (previously only worked as a side-effect)
Compiler Settings modification consistence

- in case of page flipping on a dirty compiler settings page,
  issues a warning message
- scala installation combofield selection now updates the apply button correctly.
Classpath Container Editor sets the initial selection.
Linting

- error messages
- using SWTutils for Listeners
- factorizes ScalaProject usage
- make installation hashes portable
Classpath Error (previous version) now offers a generic Scala Install Dropdown