SI-7196 add support for refineStat splicing and extraction
refine block and applied/typeapplied splicing/matching semantics

1. blocks now match single term-level expressions to account for
   automatic block elimination. E.g.

   val q"{ ..$stats }" = q"foo"

   will match into stats = List(q"foo"). This is useful to uniformly
   deal with blocks on term level.

2. blocks in quasiquotes collapse into single expressions

3. Applied and TypeApplied now have constructors too which helps
   to unify matching and extraction in quasiquote reifier

4. TypeApplied now matches AppliedTypeTree too

5. Add Syntactic prefix to Applied and TypeApplied
reify ScalaPackage symbol with the help of ScalaDot
add support for function type splicing and extraction
first-class early def splicing and extraction support
SI-7803 support for matching of anonymous function literals
SI-7723 better support for deconstruction of new expressions
rename TupleN and TupleTypeN into SyntacticTuple and SyntacticTupleType
better support for ValDefs, VarDefs and DefDefs
make the postfixOps warning go away
unify handling of references to scala members for functions and tuples
streamline implementation of annotation splicing

Syntax spec mislead me to believe that annotation can't have type
parameters or multiple argument lists... I guess the lesson here is
don't trust the spec.