Add action to show a swing tree for selection.

This new action fires up the scalac tree browser on the
selected source in the current editor. This helps track
down position-related bugs, such as issues in hyperlinking,
hovers, completions, etc.

* also fixed 'race condition' errors in the spy view.
Initialize List and Nil so the XML parser does not introduce race conditions

Fixed #1001708. No test since no reproducible test case.
Correctly handle boundary conditions in the ScalaWordFinder

I reorganized and simplified the logic in the ScalaWordFinder,
and added a few tests. It seems to fix at least the exception
and a couple of other boundary conditions (revealed by pressing
F3 at the very beginning or very end of an identifier, or even
an identifier between `{}`).

Fixed #1001526
Merge pull request #442 from dragos/issue/race-condition-xml-1001708

Initialize List and Nil so the XML parser does not introduce race condit...
Merge pull request #435 from dragos/issue/SIOOB-hyperlink-1001526

Correctly handle boundary conditions in the ScalaWordFinder
Merge pull request #428 from dragos/spy-improvements

Add action to show a swing tree for selection.
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