Various bugfixes and improvements for the quasiquotes

Fixes the following bugs:

* [SI-7196 type quasiquotes don't [fully] support type refinement inclusion](https://issues.scala-lang.org/browse/SI-7196)
* [SI-7803 matching function literals with quasiquotes doesn't work](https://issues.scala-lang.org/browse/SI-7803)
* [SI-7723 [..$tparams] in an anonymous class pattern doesn't match an anonymous class](https://issues.scala-lang.org/browse/SI-7723)

Improves handling of the following language constructs:

* new expressions 
* special handling of early definitions for classes, traits and objects
* automatic setting of the flags appropriate for function and class parameters
* better handling of class/case class/trait parents
* valdefs and vardefs
* type refinement
* better support for handling of annotations 
* function types and literals
* changes semantics of blocks, applied and typeapplied splicing and extraction

And lastly:
* makes the annoying postfixOps warning go away

Review by @retronym 

[Some discussion on the previous version of the pr.](https://github.com/scala/scala/pull/2898)