Merge pull request #1574 from jsuereth/merge-2.10.0

Merge 2.10.0-RC2 into 2.10.x
SI-6616 Check that unsafe operations are only called on the presentation compiler thread.

The method that checks the actual constraint is @elidable, expecting it to be used
for nightly builds but stripped-off in release builds. This way we don't lose any
performance, but 'fail-fast' in IDE nightlies.

This assumes that release builds will have at least `-Xelide-below ASSERTION`, but
this pull request does not do that.
SI-6539 Annotation for methods unfit for post-typer ASTs

Motivated by the `.value` method in the SBT task-syntax branch,
which should only be called within the context of the argument
to a setting initialization macro.

The facility is akin to a fatal deprecation.
Refine @compileTimeOnly

 - Don't default the message, and show it exclusively.
 - Fix cut-and-pasto in the @since tag
 - Be tolerant if the annotaion class is missing, as seems to
   have been the case compiling the continuations plugin.
 - s/\t/  / in the test file to show the errors are positioned
   correctly.
 - Use defensive getOrElse
Fix type of the custom `ClassTag` in `PatternMatching.scala`

In fb315772 custom ClassTags were introduced to optimize array
creation in hot places. The idea was that if `Array[T]` is allocated
through `ClassTag[T]` (which is essentially a factory for Array[T])
we would introduce a custom class implementing `ClassTag[T]` interface
and would have specialized array allocation instruction instead of
having reflective call as it's being done with default (compiler
synthesized) implementation of `ClassTag[T]`.

In case of `PatternMatching.scala` I made a mistake of providing
`ClassTag[Array[Clause]]` instead of `ClassTag[Clause]` so that value
would never be used and compiler still would resolve implicit through
default mechanism. This has been discovered thanks to @paulp's work
on unused value detection.

Review by @paulp.
-Yshow-trees-compact respects other options

The aforementioned tree printer now respects other tree printing
options such as -uniqid and -Xprint-types.

This helps debugging reify, which uses `nodePrinters`, not `showRaw`
to print its trees, because back then `showRaw` didn't exist yet.
Merge pull request #1602 from gkossakowski/wrong-implicit-classTag

Fix type of the custom `ClassTag` in `PatternMatching.scala`
Merge pull request #1609 from scalamacros/topic/showraw-nodeprinters

-Yshow-trees-compact respects other options
better error when typetagging local classes

Inspired by https://issues.scala-lang.org/browse/SI-6649
Merge pull request #1610 from scalamacros/topic/typetags-local-classes

better error when typetagging local classes
Merge pull request #1583 from dragos/issue/fix-6616

SI-6616 Check that unsafe operations are only called on the presentation...
Fix for SI-6662, macro failing too early.

Don't give up before you try tupling. Who knows what
someone might be doing with a Unit.
Merge pull request #1618 from scalamacros/ticket/6662

Fix for SI-6662, macro failing too early.
Merge pull request #1585 from retronym/ticket/6539-2

SI-6539 Annotation for methods unfit for post-typer ASTs
Fixes SI-6551.

Don't rewrite an explicit apply method to dynamic polytypes.