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
show developer guidelines on opening pull request

Includes "Improvements and typo fixes to CONTRIBUTING.md" by @heathercmiller
as well as feedback from @retronym.
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.
SI-6632 SI-6633 Fixes issues and data corruption in ListBuffer

 - Disallow negative positions for ListBuffer#insert/insertAll/update
 - Fix data corruption issue in ListBuffer#insert
-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
sane printing of renamed imports

Having a select named "foo" with an underlying symbol named "bar"
and trying to make sense of all that by prettyprinting is very confusing
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
SI-5330, SI-6014 deal with existential self-type

This has been broken since https://github.com/scala/scala/commit/b7b81ca2#L0L567.
The existential rash is treated in a similar manner as in fc24db4c.

Conceptually, the fix would be `def selfTypeSkolemized =
widen.skolemizeExistential.narrow`, but simply widening before
narrowing achieves the same thing. Since we're in existential voodoo
territory, let's go for the minimal fix: replacing `this.narrow` by
`widen.narrow`.

--
Original patch by @retronym in #1074, refined by @paulp to
only perform widen.narrow incantation if there are
existentials present in the widened type, as
narrowing is expensive when the type is not a singleton.

The result is that compiling the entirety of quick, that
code path is hit only 143 times.  All the other calls hit
.narrow directly as before.  It looks like the definition
of negligible in the diff of -Ystatistics when compiling
src/library/scala/collection:

    < #symbols                      : 306315
    ---
    > #symbols                      : 306320
    12c13
    < #unique types                 : 293859
    ---
    > #unique types                 : 293865

I'm assuming based on the 2/1000ths of a percent increase
in symbol and type creation that wall clock is manageable,
but I didn't measure it.
Fixes SI-6150 - backport to 2.10.x branch.
Merge pull request #1612 from scalamacros/topic/showraw

sane printing of renamed imports
SI-6634 Fixes data corruption issue in ListBuffer#remove

This is the cut-down version with minimally invasive changes,
e. g. keeping the "auto-correcting" bounds algorithm.