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)