moves compileTimeOnly to scala-library

This is the notion that's come to be universally useful, so I suggest
we promote it to be universally accessible.

Note that the attached test incorrectly fails to report errors for
definitions coming from the empty package and for annotations. These
are bugs, and they are fixed in subsequent commits of this pull request.
marks Expr.splice and Expr.value with @compileTimeOnly

Now that @compileTimeOnly is part of the standard library, why don't
we use it within the standard library.
@compileTimeOnly now works for annotations

http://docs.scala-lang.org/overviews/macros/annotations.html
say sincere "thank you!".
@compileTimeOnly now works for symbols from the empty package

Looks like we've got the entire language covered now.
Crasher in symbol tracer.
Repair NPE in -Ytyper-debug output.
Make memberType less crashy.

It's a source of constant peril that sym.tpe on NoSymbol
is fine (it's NoType) but tpe memberType sym on NoSymbol throws
a NSDNHO. The last thing we should be doing is discouraging
people from using memberType in favor of sym.tpe, the latter
being almost always the wrong thing.
Add some standard names used in pattern matcher.
Some general purpose methods.

Motivated by pattern matcher work, also useful elsewhere.
Expand the understanding of bytecode tests.

The new method is the same as sameMethodAndFieldSignatures, but ignores
generic signatures. This allows for testing methods which receive the same
descriptor but differing generic signatures. In particular, this happens
with value classes, which get a generic signature where a method written
in terms of the underlying values does not.
Add a helper method drop to ScalaRunTime.

We should do a lot more of this - it's ridiculously difficult
and error prone to generate code of this kind involving implicits,
type inference, etc. where the same goal is trivially accomplished
by generating a method call and letting the typer work out the
details.
Pushed some noisy logging down to debuglog.
Removed some dead code in Uncurry.
Positioned variations of inform/warning/globalError.

Because who doesn't want a little positioning in their life.
Cosmetic cleanup in the matcher.
Cleanups in Unapplies.
Add checkability condition.

All parents of an intersection type must be checkable for the
type to be checkable.
Minor improvement in pattern typer inference.

This exploits the infrastructure developed for checking the
checkability of type patterns to improve pattern type inference,
which suffered from a similar deficit. There was a hack for
SI-2486, the best I could manage at the time I wrote it; that
is replaced with the principled approach.
An Unapplied extractor.

This makes it a lot less error prone and redundant to find the
part you need when unwrapping an UnApply tree.
Remedied glaring omission in error output.

Catching an assert and providing beautifully formatted contextual
information is a questionable service if you forget to provide the
error message from the assert.