Fixed #1001327 - Infinite "Update Occurrences" error dialog

Basically, calling `global.loadedType` could throw an exception, and any
unhandled exception occurring in an Eclipse thread result in an error dialog
being displayed to the user. This is extremely annoying when the exception
keeps occurring, as it prevents typing in the editor!

The fix I implemented is to change the return type of the following
`ScalaPresentationCompiler`'s methods: `body`, `loadedType` and `withStructure`
to return a `Either[T, Throwable], and let the caller decide how they want to
handle the error.

Which brings me to the actual implemented fix. As you'll see in the committed
code, I'm simply ignoring any exception that may have occurred in the
Presentation Compiler side, and simply map the exception into a meaningful
NullObject (e.g., ``EmptyTree``).
It is worth noting that the exception is simply swallowed, i.e., it's not even
logged! The reason why I do so is to avoid generating noise in the logger for
something that is supposed to automagically heal itself (and, if it can't heal,
it usually means that the presentation compiler is in a bad state, and the
reason for this should be found elsewhere).

One last bit of information, this ticket is somewhat related to commit
15b66bbc0e8010275089ee967c128fa98e135be8. In the mentioned commit there has
been a refactoring for disallowing `loadedType` calls inside an `askOption` (as
this can bring the presentation compiler in a bad state). The side-effect of
running `loadedType` *outside* of `askOption` is that exception thrown inside
`loadedType` were hence left unhandled, and this resulted in the infinite
"Update Occurrences" error dialog to be displayed to the user.
Use the proper platform methods in the Scala launcher

This is a small refactoring that improves a bit the Scala launcher:

* the existence of the main class is checked in `finalLaunchCheck`, instead of inside `launch`
* compilation errors are done through markers, and integrates with the platform error message. The check is
  also done during `finalLaunchCheck` and now prompts the user if any required project has compilation errors
  before launching.

Fixed #100740, possibly others.
Merge pull request #228 from dotta/issue/infinite-update-occurrences-error-dialog-1001327

Fixed #1001327 - Infinite "Update Occurrences" error dialog
Merge pull request #229 from dragos/issue/fix-launch-tests-1000740

Use the proper platform methods in the Scala launcher
Fix #1001330 - Race condition in ``ScalaDeclarationHyperlinkComputer``

It turns out that calling ``Tree.toString`` outside of the Presentation
Compiler Thread can trigger lazy evaluation of Tree's members, which is a
problem since the compiler's data structure are not thread-safe.

I'm hoping that ``Tree.shortClass`` will provide enough information when the
list of hyperlinks is empty (if you have a better candidate, please say
something, or open a pull request).
Integrated feedback from Pull Request #232

Suppressed logging.
Merge pull request #232 from dotta/issue/race-condition-in-hyperlinking-1001330

Fix #1001330 - Race condition in ``ScalaDeclarationHyperlinkComputer``
Refactoring

* Renamed ``eventActor`` into ``companionActor``.
* Added a note on classes that need to be thread-safe.
* Passing an optional ``Range`` to ``ScalaStepOver`` (let's avoid using null).
Merge pull request #231 from dotta/feature/small-refactoring

Refactoring
Added attach and listen Scala remote connectors

The new connectors are added to the platform through extension point.
Updated the computation of canTerminate and canDisconnect in ScalaDebugTarget.
Made ScalaDebugTestSession more flexible, to be able to launch modified launch configuration,
and execute random code during launch.
Modify the tcp ip spy to support communication both side (debugger listens or VM listens)
With tests and remote test launch configurations.

Fix #1001129
Extracted the common connector code and other review changes

pr #220
Added a wait for open port in attachToRunningVM test.
Change processing of thread suspended event to be asynchronous.
Fixed compilation error after rebase.
Updated following review comments

pr #220
Added an utility method in ScalaDebugTestSession to create and add debug event listener.
Additional clean up