Gracefully handle unknown JDK classpath containers.

If the JDK required by the project does not exist, `getClasspathContainer` returns null.

Fixed #1001249.
No need to block the whole workspace to add a marker.

Resources do the necessary scheduling already inside `createMarker`.
Formatting.
Issue errors if the class path contains cross-compiled libraries with a different major version of the Scala compiler.

Identify jars with `name_2.x.y-??.jar` and compare the plugin version with the one in the name, issue errors for each library that is not compatible.

Fixed #1001441.
Reviewer's comments.
Properly initialize Scala editor (quick fix/interactive error reporting works even before a save).

Compilation units in the JDT are backed up by a `buffer`, holding the source that 
hasn't been saved yet. We use the buffer to get notification of character changes,
and in turn notify the presentation compiler. Without a proper buffer, errors (and
quick fixes) are not reported either.

Buffers are created lazily by the JDT, and we mimic the JDT code in 
`buildStructure`.

Fixed #1001094, Fixed #1001337.
Created a debug cache

Has support to keep track of nested classes as they are loaded.
With unit tests.
Re: #1001001
Integrated the debug cache to the debugger

It is used in for breakpoints and step-over.
Fixes the first part of the ticket: nested classes.
Re #1001001
Updated according to the review comments

Tweaked the API to accept any type, and always work on the outer type.
Improved a filter in step over.
Merge pull request #286 from dragos/issue/classpath-binary-validation

Validate cross-compiled binaries on the classpath
Separation of tokenizing logic from ScalaCodeScanner

To test the tokenizing logic, it was required to separate it from
the scanner because the scanner has dependencies to UI classes
that are not available in a UI-less testing environment.

The test class introduced in this commit is needed because it
doesn't yet exist. It contains test cases for all previous versions
of the ScalaCodeScanner including the changes done in PR #255.
Add syntax highlighting for @ and # signs

Fix #1001445
Merge pull request #285 from skyluc/issue/stepping-performances-1001001

debugger performance improvement (part 1)
Make the class path validator regexp stricter.

This protects against jars that might have a 2.x.y version number that looks like
a Scala version, but it's not. We check now that the third digit, if exists, is a
digit, not any character. (previously it would fail the aspects_2.1.0.nightly jar)
Reverts moving waitUntil

Reverts also the logic change
Merge pull request #279 from sschaef/issue/scala-code-scanner-test

Add test class for ScalaCodeScanner
Merge pull request #291 from dragos/urgent/fix-classpath-validator

Make the class path validator regexp stricter.
Merge pull request #287 from dragos/issue/no-quick-fix-1001094

Properly initialize Scala editor (quick fix/interactive error reporting ...
Correct regression error in ScalaCodeScanner

After refactoring the ScalaCodeScanner I discarded all white space
token because I thought it is an optimization (they must never
be colored). The offset error now occurres because of another
optimization that is done in a component built-in in Eclipse:
org.eclipse.jface.text.rules.DefaultDamagerRepairer. Whenever this
component detects style ranges of the same type that are consecutive,
only the first style range is applied and then expanded for all
following ranges. Because white space token are omitted it can be that
a color range is expanded although it is not allowed.

To correct the behavior white space token are not discarded anymore.

Fix #1001481
Merge pull request #293 from sschaef/issue/scala-code-scanner

Correct regression error in ScalaCodeScanner