Initial commit of a Scala debugger.

It is enable using a checkbox in the preferences.
It replaces the Java based debug elements by the Scala ones.
Only terminate and improved step over actions are supported right now.
None of the labels are fine.
There are likely a lot of bug and other missing things.
I'll create some doc about it on the website.
Defining ??? in the model package for scala 2.9

??? was added in 2.10, and I'm using it in the code right now.
This change can be reverted when the model is fully implemented.
Merge branch 'master' into feature/scala-debugger-1000864
Improvements to the Scala debugger

Improved display of all elements.
Added support for resume action.
Added 'this' in variable list.
Created tests for all improvements.
Added hack of logical structure support.
Merge branch 'master' into feature/scala-debugger-1000864
Support for toString in detail pane

Improved the support for logical structure for collections
Changed the display name for array indexes
Added support for symbols in names

With tests
Merge branch 'master' into feature/scala-debugger-1000864
Set of improvements to the Scala debugger

Added display of boxed values for boxing types
Added a tweak for a JDT bug.
Added support for step into and out actions.
Improved the test framework so it is more resilient
Fixed some stack traces thrown when program was terminating
Updated source locator to work with any type using file search and type search.
Fixed problem with smart step over in method without line information.
* Reworked the code to use only one list of jdi requests
Fetch local variable value right await, as the stack frame can become invalid at any time.
Changed the way the method signature for the stackframe label is generated
* MethodReference@argumentTypes can fail, especially when debug osgi application.
* MethodReference#getArguments can fail too, for native methods
* Uses the method JNI signature to create a method name.
Send the right event on resume.
Handle null thread group
Logic for can resume was reversed
Merge branch 'master' into feature/scala-debugger-1000864
Boxed char values were not correctly displayed.
Fixed class name for boxed char detection
Merge branch 'master' into feature/scala-debugger-1000864
Scala debugger stability improvements

Added check to avoid abstract methods in anon func search
Switch to actors to manage debug events
Sorted object reference fields by name
Added support for thread suspend
Fixed problem where main thread was appearing twice.
Fixed debug session hanging. All requests to the VM needs to be set to THREAD_ONLY suspend policy
'this' reference is not available for native methods
Copy of the JDT TcpIpSpy with a fix for ReferenceType#MethodsWithGeneric
Disable step over tests for collection of Ints, due to SI-5646 problem
Merge branch 'master' into feature/scala-debugger-1000864
Updates from pull request comments and code cleanup

Added some comments and cleaned style.
Switch management of Eclipse Debug Event to use extractors.
Made ScalaStepOver use the find anon func methods from ScalaDebugTarget.
Made some stepping tests less fragile.
Created stepping tests for bridge method optimisation, and enabled test without optimization.
Added Scala 2.10 vs 2.09 check in debug session.
Make semantic highlighting faster by using the Trees directly. Some tests still fail, mostly by mis-classification of symbols that stand for different things.
Try to minimize the number of symbols that are selected for highlighting. Made safe the SymbolTest class (companionClass is not thread-safe).
Optimization: Reduce number of time a Scala source is marked as changed

Marking a Scala source as changed may trigger reconciliation, which can
be a costly operation at this time since as the semantic actions are run
in the reconciler thread.

More importantly, a source should be marked as changed only if some change
really occurred, that's why we now check if the source's ``delta`` has the
flag ``IJavaElementDelta.F_CONTENT`` set.
Minor refactoring in ``SymbolClassification`` and ``SymbolTests``

The ``Selections`` trait was mixed-in to get access to the methods in
``PimpedTrees`` (which ``Selections`` mixes-in). Hence, I removed the
``Selections`` trait and mixed-in ``PimpedTrees``, which is all
``SymbolClassification`` class really needs.
Turned ``SemanticHighlightingReconciliation`` into a class and using ``java.util.concurrent.ConcurrentHashMap`` in place of Scala ``SynchronizedMap``.