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
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`.
Adds decorator extension point to change icons for Scala files

Scala files which are not on the classpath of a project get displayed
with an icon that is made for Java files. This commit replaces the Java
icon with a different one by using a decorator. Only the large icon is
replaced - smaller ones in the corners are not affected.

The decorator is enabled by default and can be disabled in
"Preferences/General/Appearance/Label Decorations/Scala Decorations"

This change only affects Scala files that are not on the classpath
because internally they are represented with a different object
compared to all other Scala files.

Fixes #1001975
Merge pull request #616 from sschaef/t1001975-enable-icon-for-files-not-on-classpath

Adds decorator extension point to change icons for Scala files