Renamed test file to match class name.
Clean up projects after each test suite.

This way we can reuse the same project in several test suits.
Terminate remote VM when the user requests it.

Fixed 1001291.
Update the status correctly in the debug session driver.

Check that events refer to the current debug target. Was leading to spurious failures in Jenkins.
Disable status handlers in the base class.

All debug tests benefit from this now.
Code review feedback:

* Use a `CountDownLatch` instead of a custom timeout-wait
* Exit the event actor on `terminate`.
Merge pull request #217 from dragos/issue/terminate-debugged-vm-1001291

Properly terminate debugged VM on user request
Add `askOption` around problematic code in semantic highlighting that caused race conditions in the compiler.

Fixed #1001302.
Switch from 'body' to `loadedType` in mark occurrences.

`body` (in fact, `askType`) will trigger a new type-checking pass regardless of where inside the type-checker you happen to be. This is most likely wrong, the we need to remove this option from the presentation compiler API. In the meantime, switched to using `waitLoadedTyped`, that is simply waiting until the current type checking phase has finished.
Slightly increased VM heap space

This was done to prevent ``java.lang.OutOfMemoryError: Java heap space`` to be
thrown during project's build.
Fix #1001233 - Graceful termination of debug sessions

Major refactoring of actor code in debugger

Extracted a common superclass (``BaseDebuggerActor``) for all actors defined in
the debugger module. This avoids duplication and makes sure that actors
terminates consistently. This base class for actors provides a number of
interesting functionalities:

* Automatic logging of all messages processed by the actor. This can be quite
useful when debugging. However, this functionality is currently commented
because it generates a lot of noise. Before enabling it, we need to add a TRACE
log level in the logger (I'll open a ticket for this).

* Stackable behaviors. By calling `become/unbecome` an actor can easily
modify the shape of messages that it processes.

* Cleaner actor's life-cylce. Basically, when starting an actor, `postStart`
hook is guaranteed to be called before the processing of any message. Then, the
actor will process messages accordingly to its `behavior` implementation.  If
an `Exit` or `PoisonPill` message is processed by `this` actor, the actor is
guaranteed to execute `preExit` before terminating.

Last, I have also added a number of FIXMEs for some problematic code that could
cause the debug session to freeze. I'll be opening tickets for each one of
these issues, so that we don't forget to fix them by the final V2.1 release
(Re #1001307, Re #1001308, Re #1001310, Re #1001311).
Refactoring of ``ScalaStep`` hierarchy.

Extracted a class that encapsulates the shared debugger stepping behavior.
Merge pull request #221 from dotta/issue/io-exception-from-vm-1001233

issue/io-exception-from-vm-1001233

Graceful termination of debug sessions
Throw an exception if the launcher fails.

The `MainMethodVerifier` may stop the Scala launcher if there is no main type,
or the project has errors. The Eclipse API requires that we throw `CoreException`,
but we used to fail silently (leading to the debug tests hanging indefinitely).
Simplify the ScalaStep hierarchy

I noticed that each type of Scala step (over, into, return) induced some unnecessary code
ceremony: a private empty class extending a class having all the functionality. Moreover,
each private class had to prevent others from instantiating it, by making the constructor
private. Seemed that it was working more like a *value* member than a class.

Since all steps work the same way, by sending two messages to an actor, I turned the `Base` class
into the implementation class used by all kinds of steps.
Merge pull request #226 from dragos/refactor/simplify-step-hierarchy

Simplify the ScalaStep hierarchy
Moved out askType from inside `ask`.

The presentation compiler is not designed to handle a call to `askType` inside an
ask. The `ask` is run during type-checking, and `askType` will usually trigger a complete
re-type-check of the (possible same) file. This may lead to spurious errors and bring
the compiler in a bad state.
Re-format.
Merge pull request #225 from dragos/issue/no-askType-inside-ask-in-occurrences

Moved out askType from inside `ask`. 
Filter out step into forwarder and default getter methods.

A general reorganization of step filters was necessary:

- made it a class instead of an object
- split functionality between the filter class and a method classifier
- split tests in unit tests (using the method classifier) and integration tests (testing the step-into
  inside a debugger instance)

A separate commit makes the Scala launch delegate behave according to the spec, throwing
`CoreException` on failure. Failure to do so was making tests hang indefinitely when a debug-test 
project had errors, and therefore could not be launched.

Fixed #1001288.