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