Change ICodeAssist to ITypeRoot in ScalaSourceViewerConfiguration

There is no advantage in working directly with ICodeAssist, therefore
this reference is removed.
Move `ScalaHover` to subpackage
Add Scala hover font configuration

This configuration is shown in

    Preferences > General > Appearance > Colors and Fonts
Add HTML aware hover

This adds a hover that can show HTML and therefore arbitrary formatted
text. It reads the config values an user specifies in the preferences and
renders the HTML accordingly. Further configuration can be done with a
new CSS file which is read by this hover.

Fixes #1001667
Add HTML creator to "show selection as type" component
Add HTML support to annotation hover
Improve style representation of error messages in annotation hovers

Due to stylistic limitations of the hover popup, multi line error
messages need to be trimmed to mostly single lines.
Combine several region util methods in one `RegionUtils` object

`Region` is renamed to `RegionUtils`. Furthermore, there is one small
functional change. `AbstractSymbolClassifierTest` contained a method
`toRangePosition` whose end is offset+length-1 whereas the new
`toRangePos` implementation (that is used everywhere else) provides the
end as offset+length, which also seems to be the correct one.
Show errors in hovers

This shows errors reported by the presentation compiler in the hover.

Fixes #1001897
Show builder error messages in hover

Error messages from the typechecker and from the builder need to be
handled differently. The error messages from the builder are not
available as long as the user doesn't build the project, whereas
the presentation compiler can show error messages immediately.

Therefore, error messages from the builder are more expensive to show.
We first have to check if the PC finds error messages and only if it
doesn't return anything, we should continue with checking if the builder
reported anything.

The error messages from the builder are available through markers.
Because they need at least be provided on a single line (because the
problems view can't handle multi line strings) the error message is
saved two times - a single line message for the problems view and the
full error massage for the hover.

Fixes #1001534
Compute additional width for browser based hovers

This is necessary because CSS attributes and some fonts are not
correctly considered by the alreaty existing algorithm that computes
the hover width.
Add scala-hover.css to build.properties
Add Markdown formatting possibility to hovers

This allows to specify some preformatting for strings that should be
shown in hovers. For example a string can be surrounded by backticks to
tell the hover that such a string should be shown as a code block.
Remove unnecessary s in strings for implicit conversions
Add return type to implicit conversions

Fixes #1001567
Add hover preference page

This preference page shows the CSS code, which is used to style the
hover, and allows users to edit it.

This also fixes some spelling errors.
Implement update mechanism for CSS file

When the CSS file is updated by the Scala IDE, all changes made by users
should not be lost. The provided mechanism detects if users made changes
and keeps them in order that users can manually merge their changes into
the updated code.
Move code to get resource of editor from `ScalaHover` to `EditorUtils`
Set UTF-8 as encoding for files read from the bundle
Update CSS file

This leads to auto expanding code blocks, when one scrolls through the
code.