Using latches
Renamed castTo to tryCastTo
Added override modifier
Fixes a couple of things

- Uses ScalaProject rather than IProject where possible
- EVENT_DELAY was set to 10000, because it was previously used
  as a count for how long to wait in milliseconds. We now use it
  as seconds, so waiting 10000 seconds would make failing tests
  appear to be non-terminating (we would wait for the latches for
  way too long)
- Creating Scala projects would not start an indexing job. This is because
  the way projects are created in Eclipse. We previously used the open
  event to signifiy new projects and opened projects, however, the open
  event is sent before the setDescription event on new projects which set
  the Scala nature, so when we got the open events and checked if the project
  was a Scala project it would return false becase the events that tells Eclipse
  that it is a Scala project hasn't propagated through the system yet.