Attempt to shut down any PC that just threw.

Alleviates the symptoms of error sin the class of #1002016.
Reinstating the JDT reconcile override in ScalaSourceFile.

It's still called by the JDT Indexer. Fixes #1002016.
This is a partial revert of ee2f5a7. See also [this comment](https://github.com/dragos/scala-ide/commit/ee2f5a7606647b0380fad1820d74b29ff01a096c#commitcomment-4675824).
Merge pull request #622 from huitseeker/issue/1002016

Reinstate call to JDT reconciler for side-effects
prevent NPE on classpath problems

I hope this fixes the NPE I'm seeing on the Scala compiler project
when I forget to set the SCALA_BASEDIR variable in linked resources.
(It also needs to be set in the "classpath variables" settings panel,
but when you forget that one you get a nice error in the error log.)

```
java.lang.NullPointerException
at scala.tools.eclipse.ClasspathManagement26357anonfun.apply(ClasspathManagement.scala:405)
at scala.tools.eclipse.ClasspathManagement26357anonfun.apply(ClasspathManagement.scala:404)
at scala.collection.immutable.List.foreach(List.scala:302)
at scala.tools.eclipse.ClasspathManagement.validateBinaryVersionsOnClasspath(ClasspathManagement.scala:404)
at scala.tools.eclipse.ClasspathManagement.checkClasspath(ClasspathManagement.scala:299)
at scala.tools.eclipse.ClasspathManagement.isClasspathValid(ClasspathManagement.scala:199)
at scala.tools.eclipse.ScalaProject.isClasspathValid(ScalaProject.scala:93)
at scala.tools.eclipse.ScalaBuilder.build(ScalaBuilder.scala:59)
at org.eclipse.core.internal.events.BuildManager.run(BuildManager.java:733)
```
Merge pull request #635 from adriaanm/npe

prevent NPE on classpath problems
Allow task tags to start with a special sign

The implementation of `CombinedWordRule` has changed insofar that a word
that is already read but not matched can now be rescanned by other
rules. Previously the word was associated with a default token.

Fixes #1000991
Refactorings in wizard components
Merge pull request #630 from sschaef/t-wizards-refactoring

Refactorings in wizard components
Merge pull request #633 from sschaef/t1000991-task-tags-with-special-start-sign

Allow task tags to start with a special sign
Add 'Xlint' and 'feature' to the compiler preference site

Both warnings are added to the standard section because
they are some of the most important ones.

Fixes #1002039
Show confirmation dialog before doing a workspace wide clean

Fixes #1002043
Merge pull request #637 from sschaef/t1002039-add-xlint-pref

Add 'Xlint' and 'feature' to the compiler preference site
Implementation of an indent guide + test suite

The indent guide is enabled by default and can be disabled in
  Preferences -> Scala -> Editor

The implementation tries to redraw as less as possible to guarantee no
delay while typing - some short tests measured a drawing time of 1ms
while typing and 20-30ms when a new file is opened.

Furthermore, the editor preference page is redesigned.

Fixes #1002033
Fix indent guide indentation depth for tabs
Scala preference is chosen for indentation depth in Scala editors

Fixes #1000828
Merge pull request #634 from sschaef/t1002033-indent-guide

Implementation of an indent guide + test suite
Merge pull request #638 from sschaef/t1002043-disable-automatic-clean

Show confirmation dialog before doing a workspace wide clean
Presentation Compiler should not reload managed units while keeping the lock

While restarting the presentation compiler, all units managed by the restarted
presentation compiler are (re)loaded in the new presentation compiler.
However, doing so while holding the `pcLock` can lead to a deadlock, as it can
be observed in the stacktrace reported in the ticket #1002003.

The proposed solution is move the reloading of the compilation units managed by
the restarted presentation compiler *outside* of the synchronized block. This
prevents the deadlock from happening. Unfortunately, this change also introduces
a new race-condition, as it is now possible that the compilation units loaded in
the restarted presentation compiler may be loaded in the new presentation
compiler, if two restart requests are executed concurrently. This is definitely
an issue, but I don't see how we can fix this problem on our side (my sentiment
is that we may be able to fix the problem by changing the initialization
contract in the presentation compiler).

Related to the above, it is worth noting that a similar race condition can
already happen even without the changes proposed in this commit. For instance,
all requests queued in a presentation compiler can get lost if the presentation
compiler is restarted before the queued requests have been served.

Fix #1002003
Fix #1002007
Fix #1001943
Fix #1001911
Re #1001880
Re #1001875
Merge pull request #639 from dotta/issue/pc-deadlock

Presentation Compiler should not reload managed units while keeping the lock
Package structure reorganisation.

This commit keeps all filenames unchanged, but builds a cleaner
package structure of the IDE.

There are only 5 top-level packages now:
- core
- ui
- logger
- util
- refactoring

Code is split in internal and API packages. Note that this commit
only touches directories, and the API work (clean up, documentation,
interfaces) will follow.

The guideline was to keep related code together. The only exception is
 ui code, that is moved to its top-level package. Additional dimensions
 (for example, following Eclipse concepts like launchers or preferences
 would make it too hard to decide what goes where).

Two unused files were removed:

- JVMUtils
- util/Colors.scala

This organisation makes it easier to see duplicated functionality (like
several RegionOps implicit classes). However, to keep things simple, that work is delayed to follow up PRs, so code changes can be independently 
and easily reviewed.