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
Don't add local suffix (one space character) for field completions

Correctly deal with private local fields backing up a val/var. The
presentation compiler always returns the `val` backing up a val/var, for
reasons of uniformity (getters won't work everywhere, because local variables
or private fields don't have a getter). However, the
proper way to look at such fields is to look for their getter (who
has the correct name, accessibility flags, etc).

Fixes #1001973
Merge pull request #605 from dragos/issue/caching-jar-describer-info

Cache info about jar files that might contain Scala classifies.
Add synchronisation around map `getOrElse`.

Needed for proper visibility, in case this code
is called on different threads.
(cherry picked from commit 6181d7f57da6c28cc6f6ef0df873a2f7a960ba73)
Merge pull request #610 from dragos/issue/flaky-completion-relevance-test-1001973

Don't add local suffix (one space character) for field completions
Merge pull request #612 from dragos/issue/add-sync-caching-jars

Add synchronisation around map `getOrElse`.