Semantic Highlighting now works on classfile source attachments

Created a `ScalaCompilationUnitEditor` that contains the logic common to
both the `ScalaSourceFileEditor` and the `ScalaClassFileEditor`. In particular,
the logic needed to install/dispose semantic highlighting is encapsulated in
`ScalaCompilationUnitEditor`.

It is worth pointing out that the initialization of the Semantic Highlighting
engine is different for the two editors. On the one hand, on an editable scala
source, semantic highlighting is triggered by the reconciler. On the other
hand, for a classfile source attachement, no reconciler is needed (because the
source file can't be edited), hence semantic highlighting needs to be forced at
initialization. This is why in `ScalaCompilationUnitEditor` we have the
following two additional abstract methods

* `forceSemanticHighlightingOnInstallment`
* `createSemantichHighlighter`

This commit comes with no tests because it is not possible to avoid the loading
of UI classes.

Fix #1000939
Integrated reviewers' feedback
Added ScalaCodeTokenizer.tokenize which takes a String instead of an IDocument.

ScalaCodeTokenizer.tokenize asked for a IDocument only to right away get the IDocument's contents and then never use it again. It makes more sense to just take the contents as a string directly, which is what this change does.
Also deprecated ScalaCodeTokenizer.tokenize(IDocument, Int, Int).
Correct completion for no-args method

Method are now completed according to their definition, i.e., if the method was
declared with parens, the completion engine inserts the empty parens.

Fix #1001766
Merge pull request #446 from dotta/issue/fix-completion-insertion-for-empty-params-method

Correct completion for no-args method
Merge pull request #452 from dotta/issue/semantic-highlighting-on-attached-sources-1000939

Semantic Highlighting now works on source attachments
Fix potential resource leak caused by missing socket close statement
Merge pull request #463 from sschaef/resource-leak-fix

Fix potential resource leak caused by missing socket close statement
Improved new ScalaCodeTokenizer.tokenize API to minimise allocation of string objects on caller side.
Merge pull request #462 from jhaberstro/scala-code-tokenizer-interface

ScalaCodeTokenizer.tokenize takes String instead of IDocument.