Tuned ``MainClassVerifier`` to consider classfiles instead of sourcefiles

The Problem
+++++++++++

With the former implementation, an error was reported every time the _package
name in the source did not match the source's physical location_. This is too
eager, in fact the two don't need to be in sync for the user to be able to
launch a Scala Application.

However, despite the error dialog, the Scala Main class was still run. The
reason for this is that there was a double bug! (I'm gonna name tihs one
*hadouken-bug*) [This
line](https://github.com/scala-ide/scala-ide/pull/444/files#L2L122) was always
returning ``true``. What that line wanted to check is the ``IStatus.severity``
field, but it was actually comparing the ``IStatus.code`` (the IStatus
interface is definitely not the cleanest API ever, can't really blame people
for getting confused...).

The Solution
++++++++++++

The minimal condition for running a Scala Application is that the class' Main
binary exists. Hence, I've updated the code to reflect this requirement.

Moreover, if a class file for the ``mainTypeName`` exist, but no companion
module class file can be found, an error is now reported to inform the user
that he needs to change the class declaration into an object.

Fix #1001760
In the immortal words of @paulp:
 "Can we please, please not do this:

  import PatternMatchingStats._
  import global.{phase, currentRun, Symbol,
    Apply, Bind, CaseDef, ClassInfoType, Ident, Literal, Match,
    Alternative, Constant, EmptyTree, Select, Star, This, Throw, Typed, UnApply, (...)"

Let's simplify merges, by making our imports mono-line !

Thanksfully, in the IDE, we don't do (many) *mutli-line* braced Imports, so it
was enough to filter them with the following one-liner:

for i in `find ./ -type f -name "*.scala"`; do perl -nle 'if (m/^(\s*)import\s([^\n]+?){([^}]*?)}$/smg){my ($s,$x,@y)=($1,$2,split /,\s*(?!_|\s)/,$3); foreach $dep (@y){$dep =~ s/^\s+|\s+$//g; $dep=($dep =~ m/=>/)?"{ $dep }":$dep;print "${s}import $x$dep";}} else {print $_;}' $i > $i.nu; mv $i.nu $i; done

Note the negative lookahead to avoind busting final wildcards in
braced imports (see the Spec version 2.9, section 4.7), .

If you want to do this on a repo that contains multi-line braced
imports, look into unsetting the special variable '$/' of perl, and
relax the condition on the presence of new lines in the second capture
group of the regex above. I strongly advise against doing this
automatically on such a repo, though.

Fixes of multiline braced imports (manual).

Let this be the end of this lazy, messy, mergepain-inducing practice.

Fixing test relying on braced import.
Update Scalastyle Maven plugin to version 0.3.2
Merge pull request #448 from sschaef/t-scalastyle-update

Update Scalastyle Maven plugin to version 0.3.2
Merge remote-tracking branch 'origin/pr/444'
Merge pull request #439 from huitseeker/split-monoline-multiple-imports

Removes needless braced imports to ease merges.
Applies changes needed to compile against Juno

Updates the jdt dependencies.
Implements the added and modified abstract methods.
Ligth cleanup of the poms.
Removes some helios support

- Remove helios reflection implementation from GeneralScalaJavaBuilder.scala
- Cleanup unused imports
Sets Eclipse profile in default params for build
Removes pre-Juno generic hack
Fix dependency on `org.junit4`.

In Kepler, there's only one bundle, `org.junit`.
Removes references to JavaStringAutoIndentStrategy

This is an internal JDT class, and its constructor changed between Juno and Kepler.
It was a blocker to be able to use the same build on both Juno and Kepler.
Less non-API reference is better.

The features lost are the one defined in the 'In string literals' in
Preferences>Java>Edito>Typing. They are about managing multiline content in simple string literals.
They didn't really make in the Scala context, where multiline string literals can be used.
Solve warnings about adapting argument lists
Resolve warnings about implicit conversions.

- Change implicit conversions to implicit classes
- Make implicit methods explicit when implicit is unnecessary
- Make some implicit conversions more explicit
- Reduction of scope of implicit conversions
Fix "catch all Throwables" warnings
Solve warnings about postfix operators
Solve warnings about side effecting nullary methods
Solve warnings about reflective access of structural types
Solve deprecation warnings
Fix #1001774: don't discard generated code

Also fix another instance of the same bug.