Hover improvements2

Improved version of the hovers. Addresses all issues discussed in #750 and improves the style of the hovers in some areas. Most important change to the previous PR is that a preference page exists in `Scala→Editor→Hovers`, that allows users to edit the CSS code.
We don't need to use reflection to do this.

It is possible to ask the renderer for the (average) width of characters.
I added it x10, to avoid problems when the html contains a list (the default indentation of the list elements is pretty large).
Something I was not able to find a solution: the value of `p.x` is created using the font size at startup, it doesn't change when the font is modified. Is it possible that you cache the value somewhere?

```scala
  private var control: Control = _

  override def createContent(parent: Composite) = {
    super.createContent(parent)
    
    val children = parent.getChildren()
    control = children(0)
  }

  /** Take size hint of super implementation but add additional width. */
  override def computeSizeHint() = {
    val gc = new GC(control)
    gc.setFont(JFaceResources.getFontRegistry().get(ScalaHover.HoverFontId))
    val averageCharWidth = gc.getFontMetrics().getAverageCharWidth()
    gc.dispose()
    
    val p = super.computeSizeHint()
    p.x += averageCharWidth * 10
    p
  }
```