Added a Scala auto-edit strategy for scaladoc.

This is motivated by the lags introduced by the Java auto-edit (see #1001263),
who was triggering reconciliation.

Fixed #1001263.
Filter out types containing `$` from type completions.

Don't wait for the JDT indexer when searching for types on the class path. 
This should make completions a bit more responsive. Refs #1001020.

Fixed #1001264.
Removed quadratic search for duplicates in the types added from class path.

Switched from ListBuffer to MultiMap, it is consistently faster in my tests. For large class paths this can make a big difference.
Added a profile to set the scala versions

The profile runs a tool which git the versions from the properties files
unzipped during the toolchain build.
Set a value to SET_VERSION to trigger the extra step.
Merge pull request #207 from skyluc/build/version_numbers_m2

Added a profile to set the scala versions
Added overload for `askOption` instead of the default argument.

This maintains compatibility with plugins compiled against the m2 release.
Switched to https to please Chrome security checks.
Removed nonexistent property test.

Fixed #1001214.
Merge pull request #209 from dragos/issue/fix-1001214

Removed nonexistent property test.
No timeout when running tests.

Added an environment option to suppress timeouts when running tests. This will make
tests more repeatable. The option is passed by default in the maven build for tests,
but if you want to run the IDE in that mode (for instance, in the debugger), make sure
to add -Dsdtcore.notimeouts to your command line options.
Merge pull request #204 from dragos/issue/scaladoc-auto-edits-1001263

Added a Scala auto-edit strategy for scaladoc. Refs #1001273.
Fixed typo in charts.html
Fixed build-all.sh script

The parent project was no longer built when using the build-all.sh script. This was
the reason why the IDE builds where no longer succeeding after the local m2 repo is
deleted.

This regression was introduce by the commit SHA: e986f0cbd641ff83eafe4aee5425950e04ab3d6a
sbt crashes cause build errors. Fix #1001274.
Merge pull request #206 from dragos/issue/no-dollars-in-scope-completions-1001264

Performance improvements in completions
Wait for the indexer when asking for scope completions.

It turns out that not waiting for the indexer makes some tests flaky.

Re-enabled blocking wait for the indexer. Even if it is slow, it would be slow only the first time someone asks for completion, and should be fast afterwards. Something we might reconsider to be configurable.
Merge pull request #211 from vigdorchik/report_crash

Sbt crashes cause build errors. Closes #1001274.
Enabled test in OccurrencesFinderTest
Fixes #1001268 - No more NPE in update occurrences when a source is deleted

Deleting a source file could lead to NullPointerException (NPE) in
`ScalaOccurrencesFinder`.

The issue is actually easy to reproduce. Say you have a source `A` and that
`ScalaOccurrencesFinder.findOccurrences` was just ran against it. At this
point, the value of `ScalaOccurrencesFinder.indexCache` holds a reference to
`A`.  In this scenario, deleting `A` will cause a NPE to be thrown the next
time `ScalaOccurrencesFinder.findOccurrences` is ran against any other source.

The above described scenario happens because `ScalaOccurrencesFinder` is a
singleton, and `ScalaOccurrencesFinder.getCachedIndex` is used to check for
equality of source files. In the current implementation, checking equality on
source files throws a NPE exception if the resource does no longer exist (have
a look at `EclipseResource.equals`).

The fix simply consists in linking each editor (and hence each source file) to
a *different* `ScalaOccurrencesFinder` instance. By doing so, the
`ScalaOccurrencesFinder.indexCache` no longer needs to hold a reference to the
`SourceFile`, and hence the NPE can no longer occur.

An additional positive aspect of not using a singleton `ScalaOccurrencesFinder`
is that now the occurrences index (i.e., `MarkOccurrencesIndex`) is no longer
rebuilt while switching among the active editors.

Last, there are a number of refactoring that have been carried out, I'll
mention the three I consider important:

* The Eclipse `Job` instance used to execute the "update occurrences" task,
  used to have high priority (i.e., Job.INTERACTIVE), while it is now low
  priority. The reasoning is that while the information computed by "update
  occurrences" are useful, they are not critical.

* The signature of `InteractiveCompilationUnitEditor` used to return an
  `Option[InteractiveCompilationUnit]`, ant it now returns a
  `InteractiveCompilationUnit`. The reasoning here is that an editor should
  always have a compilation unit attached to it. The only moment when this is
  not the case is during the editor initialization, but calling
  `getInteractiveCompilationUnit` on a yet not fully initialized editor doesn't
  make sense, and hence this should fail fast (i.e., throwing a NPE is a good
  way to inform the developer that is doing the wrong thing, returning None is
  not as good IMO).
  Furtheremore, if you look at the implementations of
  `getInteractiveCompilationUnit` in `ScalaSourceFileEditor` and
  `ScalaClassFileEditor`, you will see that both implementations already assumed
  that a compilation unit is already attached to the editor (the compilation unit
  is wrapped in a `Some`, not in an `Option`). Therefore, returning an `Option`
  appears like an unneeded overhead, and the current implementation should work
  no worse than the former.
* Added debug output to know how much time is spent for
    1) Building the mark occurrences index, and
    2) end-to-end update occurrences action.
Refactoring in `ScalaSourceFileEditor`

* Organized imports.
* Moved fields declaration to the top.
* Moved inner class declarations in companion object.
* Reduced visibility of method `askForOccurrencesUpdate`.
* Reduced scope of `scalaCompilationUnit` and `getAnnotationModel` methods.