No need to call setIsStructureKnown, as it is already done by the caller

In ``ScalaCompilationUnit#buildStructure``, there is no need to call
``setIsStructureKnown`` on the current compilation unit, as it's the
caller's responsability to do so.
``ScalaSelectionEngine`` uses now a ``ScalaCompilationUnit`` (instead of a
``ICompilationUnit``)

Both ``ScalaSelectionEngine`` constructor and the ``select`` method started
with casting the passed compilation unit to ``ScalaCompilationUnit``.  Beside
not being safe, this unsafe cast is actually not needed.
Better implementation of ``ScalaProject.sourceFolders``

No need to traverse the collection twice.
Minor refactoring in ``testsetup`` classes

* Removed ``ScalaUnit`` type alias and replaced usage of ``ScalaUnit`` with ``ScalaSourceFile``.
* Added explicit method's return type.
* Changed signature of ``SDTTestUtils.addFileToProject``: the passed ``content`` is now an ```Array[Byte]`` instead of a plain ``String``.

Note: This commit should be probably backported in 2.0.x branch
Created infrastructure for find references tests
Correctly find references of class fields

Fix #1000067
Index parameterless methods

Parameterless methods occur in the Scala AST as ``RefTree`` nodes.

Re #1000067
Improved find references of methods

When looking for references of method `xxx`, the method itself should not be
reported as a match. Indeed, find references is about finding usages of `xxx`,
not the declaration (and that is why a find declaration action exist).

Re #1000067
Correctly handle find references on field declarations

When Find References was performed on a val/var declaration, a popup dialog
used to be shown saying:

> The operation is unavailable on the current selection. Please select a valid
> Java element name.

The issue is in the compiler symbol found for the val/var declaration.
It turns out that the symbol's name can contain a trailing space, which
caused the equality test between the editor's current selection and the
symbol's name to always fail.

A test was also created to prove the issue is now corrected.

Re #1000773
Tested find references for both constructor and type

Created tests to check that:

* class' constructor references are correctly reported.
* class' type references are correctly reported (also for type bounds).

Fix #1000063
Correctly handle find references on class type

In ``ScalaMatchLocator.reportObjectReference`` only object references are reported, hence we are not interested in constructors. That's why we look at the element's parent if a ConstructorElement is returned for the passed position. The reason why in ``ssf.getElementAt`` can be a constructor has to be looked in the implementation of the ``ScalaStructureBuilder`` and ``ScalaCompilationUnit.getSourceElementAt``.

Fix #1001084
Tested find references for companion object members.
Added FindReferenceTests to regression suite
Added comment in ``ScalaStructureBuilder``
Integrated code review comments pull #125
Added FIXME note in FindReferencesTests
An extension point for code analyzers that are run as part of the build process.

Analyzers can be enabled individually, and it's possible to define a custom
severity for the markers. Preferences can also be set per project. The analysis
is implemented as a separate plug-in so that it can be used from the SBT
builder.

For development and running inside Eclipse, we now create a separate
compiler-plugin jar that then loads the analyzers from the running
Eclipse's classpath. The provided builder and launch config contain
everything to make things work.
Detect non-local return statements.

Inspired by Miguel's Scala Days 2012 presentation.
Warning and quickfix for unnamed boolean arguments.