typedAnnotated no longer emits nulls

Adds a null-check in original synthesis for the result of typedAnnotated.
Previously it was possible for the aforementioned result to look like
TypeTree(<tpe>) setOriginal Annotated(..., null). Not anymore.
SI-4760 Parser handles block-ending import

Don't molest the RBRACE.

Updated with additional parse tests suggested
by @retronym.  "What are you lazy?"  Yes, I
must be lazy.  Can't ScalaCheck or Par-Test
generate these tests automatically?  That seems
like a reasonable expectation.
SI-7150 Replace scala.reflect.internal.WeakHashSet

Replaces scala.reflect.internal.WeakHashSet with a version that
* extends the mutable.Set trait
* doesn't leak WeakReferences
* is unit tested
SI-7149 Use a WeakHashSet for type uniqueness

Currently type uniqueness is done via a HashSet[Type], but
that means the Types live through an entire compile session, even
ones that are used once. The result is a huge amount of unnecessarily
retained memory. This commit uses a WeakHashSet instead so that Types
and their WeakReferences are cleaned up when no longer in use.
Modify perRunCaches to not leak WeakReferences

perRunCaches was using a HashMap of WeakReferences which meant it would
accumulate WeakReferences over time. This commit uses a WeakHashSet
instead so that the references are cleaned up.
Merge pull request #2899 from som-snytt/issue/4760-parser

SI-4760 Parser handles block-ending import
Merge pull request #2876 from retronym/ticket/7782

SI-7782 Derive type skolems at the ground level
Merge pull request #2901 from gkossakowski/backport-uniques-memory-fix

Backport #2605 to 2.10.x: SI-7149 Use a WeakHashSet for type uniqueness
Merge pull request #2888 from xeno-by/topic/typed-annotated

typedAnnotated no longer emits nulls
Merge remote-tracking branch 'origin/2.10.x' into merge/2.10.x-to-2.10.3