a note about Symbol.typeSignature

No changes to behavior, just documenting internal workings of reflection
a bit more thoroughly, one step at a time.
Revert "synchronizes pendingVolatiles"

This reverts commit 000c18a8fac60065747652368dadcd7850532f3f,
because Symbol.isStable is independent from Type.isVolatile
since fada1ef6b315326ac0329d9e78951cfc95ad0eb0.
FromJavaClassCompleter is now flag-agnostic

A minor evolution of the notion of completion + also a small performance
optimization.
removes non-determinism in reflection-sync-potpourri

Depending on the environment in which the test is run, s1 can be either
“String” or “java.lang.String”. This is one of the known non-deterministic
behaviors of our reflection, caused by prefix stripping only working for
packages defined in the root mirror. Until we fix this, I suggest we make
the test more lenient.
SI-8131 fixes residual race condition in runtime reflection

Apparently some completers can call setInfo while they’re not yet done,
which resets the LOCKED flag, and makes anything that uses LOCKED to
track completion unreliable. Unfortunately, that’s exactly the mechanism
that was used by runtime reflection to elide locking for symbols that are
known to be initialized.

This commit fixes the problematic lock elision strategy by introducing
an explicit communication channel between SynchronizedSymbol’s and their
completers. Now instead of trying hard to infer whether it’s already
initialized or not, every symbol gets a volatile field that can be queried
to provide necessary information.
turns off the gilSynchronizedIfNotInited optimization

According to Jason (https://github.com/scala/scala/pull/3391#issuecomment-32904460),
this one is still causing trouble, so we have to turn it off until
we have time to debug it.
Rename EmptyTypTree into SyntacticEmptyTypeTree

1. Change the name as Eugene believes previous name was misleading

2. Remove EmptyTree case as it's not needed any longer
Represent tq"" as SyntacticEmptyTypeTree rather than TypeTree()

Such representation codifies the fact that type tree that doesn't have
embedded syntactic equivalent must have been inferred or otherwise
provided by the compiler rather than specified by the end user.

Additionally it also ensures that we can still match trees without
explicit types (e.g. vals without type) after typechecking. Otherwise
the same quote couldn't be used in situations like:

    val q"val x = 42" = typecheck(q"val x = 42")
Better comment for SyntacticEmptyTypeTree
Merge pull request #3477 from densh/topic/syntactic-empty-type-tree

Rename EmptyTypTree into SyntacticEmptyTypeTree
Use more specific return type for SyntacticFunction
Add support for a more straightforward alternative to import selectors
Merge pull request #3468 from densh/topic/syntactic-import

Add support for a more straightforward alternative to import selectors
Merge pull request #3391 from xeno-by/ticket/8131

SI-8131 fixes residual race condition in runtime reflection