Make pointcut pick up subclasses of ScalaJavaBuilder.

This fixes a problem at a customer (cleaning output folders, leading to
empty output folders after successful builds), but I could not reproduce
locally. Confirmed it works for said customer, so rolling back to main
project.

Fixed #1001995

(cherry picked from commit bcd85b3a3af3b00b3cb195b2561c1c880feac0b9)
Correct completion overwrite behavior when nothing is overwritten

This fixes the problem only partially because it is based on a
heuristic, but it should fix the most important cases.

The logic is overall very complex, nevertheless no tests are provided
because there exists no test suite that can test the contents of a
document after a completion happened and writing such a test suite is
not trivial.

Fixes #1001791
Merge pull request #600 from dragos/issue/pointcut-allow-subclasses-1001995

Make pointcut pick up subclasses of ScalaJavaBuilder.
Merge pull request #603 from sschaef/t1001791-correct-completion-overwrite

Correct completion overwrite behavior when nothing is overwritten
Ignored completion test causing spurious failures on 2.11 build

Re #1001973
Merge pull request #609 from dotta/issue/spurious-failure-on-list-completion

Ignored completion test causing spurious failures on 2.11 build
Workaround for race condition during source indexing

Initialize the `TupleClass` symbol to prevent the presentation compiler
assertion that checks thread confinement to fail on parse trees, as
demonstrated by Re #1001986. This is a workaround for scalac ticket SI-8030, as
we need the fix to be readily available on Scala 2.10 as well.

Calling `initialize` is sufficient according to @retronym, as highlighted in
this comment https://github.com/scala/scala/pull/3262/files#r8361292
Cache info about jar files that might contain Scala classifies.

Deciding wether a class file is produced by Scala is expensive (it entails
parsing the binary). Instead, we cache the information per package fragment,
assuming that a jar contains Scala-only or Java-only classifies. For
mixed Java/Scala jars, behaviour depends on the first classfile that is
accessed. It might lead to using the Java icon/classfile editor for
Scala classfiles.

A more fine-grained strategy could be used (caching per package, instead
of jar file), but this patch has been running at a customer and solved
the issue, so we go for the tried-solution.

Fixes #1001999
Merge pull request #608 from dotta/issue/workaround-for-1001986-take2

Workaround for race condition during source indexing
Merge pull request #605 from dragos/issue/caching-jar-describer-info

Cache info about jar files that might contain Scala classifies.
Only ask for diagnostics at first install and if heap is not sufficient.

Added PreferenceStore wrapper allowing to get options.

Fixes #1001113
Removing the custom "non-idiomatic" eclipse preferences wrapper. And adding automatic editing of eclipse.ini.

Fixes after review.