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.
Merge pull request #599 from dragos/issue/pointcut-allow-subclasses

Make pointcut pick up subclasses of ScalaJavaBuilder.
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
(cherry picked from commit 492a546df849aa75d316bb8c95ee9c8b981f998d)

Conflicts:
	org.scala-ide.sdt.core/src/scala/tools/eclipse/javaelements/ScalaClassFileProvider.scala
Add synchronisation around map `getOrElse`.

Needed for proper visibility, in case this code
is called on different threads.