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.