Add checks if the underlying project closed/not exists

There are scenarios, where project depends on other, closed projects -
this happens with IvyDE, which adds even closed projects to the dependency
list (of course, in that case, the generated jars added as well), but
these closed projects cause build failures for ScalaIDE, because it
doesn't expects that the underlying IJavaProject could throw exceptions.
So the general fix is to add checks before calling the critical methods,
and a catch block with logging.
 This fixes #1001465
Added a Scala preference for Mark Occurrences

Added a toolbar button for quick access.
Fixes #1001466
Attempt to fix spurious errors in the PC test suite.
Bumped version to 4.0.0.
Use a Job when reading classpath markers in test.

The source of flaky tests was race condition in the classpath validator:
* one thread removed the old markers and adds the new ones
* the test thread waits until it finds a marker (which can happen before they are
removed) and reads them again for validation (which can happen between 'delete'
and 'add')

The proper solution is to put the test reads inside a `Job` that is scheduled
on the same resource (the project), leading to proper synchronization.
The keyword 'requires' is no longer shown as keyword

The parsing is done by Scalariform. Because it treats 'requires' still as a keyword,
it needs to be translated to default content type.

Fix #1000750
Reformatting of ScalariformToSyntaxClass
Fixes problems in preference state sharing

Using only Boolean, and correctly starting the toggle handler listener.
Initialize symbols for primitive types on compiler startup.

The nightly build uncovered a race condition in the indexer, that stepped on
a case where `definitions.ShortClass` was not yet loaded, triggering the
symbol loader.

Needs back port. Should fix flaky presentation compiler tests.
Disabled flaky debugger ``RemoteConnectorTest`` tests class

Re #1001464