Dumbed down `MainClassVerifier` to only check class vs module mismatch

Experience taught us that `MainClassVerifier` is trying to be too smart, and
often prevents user from launching perfectly fine Scala launch configurations.
The last manifestation was that it would prevent users from launching a main if
defined in a JAR.

The matter was discussed with the team and the agreed descision is to reduce
the scope of the `MainClassVerifier` to only prevent users from:

* launching a Scala application if the project contains build errors, and
* provide feedback when trying to launch a Scala `class`, instead of a `object`

Consequently, we no longer prevent users from launching a Scala application
that is incorrectly configured (i.e., the classfile doesn't exist). The
consequence is that a `NoClassFoundException` will be reported to the user in
this case, which actually matches the behavior in the Eclipse Java support.

Let's dive into the details and describe what are the extent of the changes
carried out by this commit:

* Check for build errors is performed only if the a classfile for the
  `mainTypeName` provided in the Run config can't be found. Hence, if the
  classfile exist, this allows you to run your application even if there are
  errors in the project.

* `ScalaLaunchDelegate.finalLaunchCheck` does not longer call `super`. This is
  to avoid the Java Eclipse prompt is displayed. Instead, the `UIReporter` is
  called, and I've improved it to be a standard platform dialog. The improved
  dialog also allows users to by-pass the check.

* This patch consciously breaks source compatibility (because I removed the
  `MainClassVerifier` constructor, and deleted the `ErrorReporter` trait).
  I could re-introduce them and use deprecation, but it doesn't seem worth the
  effort (and none has complained about this change during the review process).

backport to release/scala-ide-3.0.x

Re #1001882
Fixes #1001878