Remove the hard-coded InteractiveCompilationUnit from `ScalaHover`

The associated compilation unit may change (see #1002251) when the editor
is reused. On top of that, the structured editor in the Play plugin needs
a no-arg constructor (it’s instantiated through an extension point).

This change allows the Play plugin to use plain Scala hovers, including
all the goodies (configured font and CSS, scaladoc, etc).
Allow for dot in extension for SourceFileProvider registry.

Play templates are not just `html`, but `scala.html`. This change allows
one to declare a source file provider for them. Unfortunately, this makes
lookup linear in the number of providers, but hopefully that’s not a big
deal (so far we only have two).
A number of changes in the compilation unit APIs.

- added default implementations for a number of ICU methods. These are
  tricky aspects (like initial reconcile and scheduleReconcile) that are
  unlikely to change, and the compiler relies on a certain protocol
- added a `ScalaCompilationProblem` case class, extending the Java `IProblem`.
  This allows finer control over how errors are reported
- added the concept of a source map. This is how any compilation unit is
  translated to Scala, and provides way to translate positions back and
  forth.
- updated usages of compilation units to go through the mapping functions
- added a self-type, fixing the dispatch order for ask-methods to go again
  through `flushScheduledReloads`
- fixed the hyperlink selection region for operator names (it used to
  be according to the encoded name).
No more printlns!
Fix NPE in attached sources, and make Hovers aware of source maps.

- expanded and corrected documentation about source maps and related methods.
- removed one instance of ⇒ that made Eclipse go nuts in that file (line spacing
  was increased, see [206740](https://bugs.eclipse.org/bugs/show_bug.cgi?id=206740)
Merge pull request #812 from dragos/api/refactor-compilation-unit

Refactor the way compilation units work
Fix deadlock by moving `res.get` outside of synchronized block.

Fixed #1002275.
Remove `HoverAspect` and `IScalaWordFinder`

I'm not entirely sure if the removal of `HoverAspect` doesn't break
anything. It is definitely not used in Scala hovers, because the Scala
IDE has its own implementations. It may be used by some Java hovers, but
I couldn't find one that actually uses it. In the worst case this change
means that some Scala elements are no longer shown in Java hovers.
Conflicts:
	org.scala-ide.sdt.core/src/org/scalaide/util/internal/ScalaWordFinder.scala
Merge pull request #814 from huitseeker/793-reissue

Remove aspect hover
Introducing Utils API

It opens APIs to

 Utils
 DisplayThread,
 EclipseUtils,
 EditorUtils,
 FileUtils,
 OSGiUtils,
 ScalaWordFinder,
 SWTUtils
Documents the Utils API
Renaming [Pp]imped(\w+) to Rich\1
Merge pull request #817 from dragos/issue/fix-deadlock-1002275

Fix deadlock by moving `res.get` outside of synchronized block.
Switches to toplevel objects with public/private members

Fixes #1002247
Merge pull request #815 from huitseeker/issue/UtilsAPI

An API for Util methods
Harden locate symbol. Sometimes there is no source provider.

This used to cause an NPE in the Play plugin when hovering over a Routes
name (it’s source file is Java, and we don’t have a source file provider for Java).
Merge pull request #818 from dragos/master

Harden locate symbol. Sometimes there is no source provider.