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.
SI-1980 A lint warning for by-name parameters in right assoc methods

The desugaring of right associative calls happens in the parser. This
eagerly evaluates the arguments (to preserve left-to-right evaluation
order the arguments are evaluated before the qualifier).

This is pretty surprising if the method being called has a by-name
parameter in the first parameter section.

This commit adds a warning under -Xlint when defining such a method.

The relevent spec snippets:

> SLS 4.6.1 says that call-by-name argument "is not evaluated at the point of function application, but instead is evaluated at each use within the function".
>
> But 6.12.3 offers:
> "If op is right- associative, the same operation is interpreted as { val x=e1; e2.op(x ) }, where x is a fresh name."
Use scala-partest 1.0-RC4

RC3 had a binary incompatibility that led to a crash in parsing options,
due to:
- https://github.com/scala/scala-partest/commit/9ff138ab4b
- https://github.com/scala/scala/commit/2b1563fa74

Also added sonatype as a repo for resolving partest,
so we don't have to wait for artifacts to synch to maven central.
Merge pull request #2862 from adriaanm/partest-1.0-RC4

Use scala-partest 1.0-RC4
Merge pull request #2810 from xeno-by/topic/compile-time-only

@compileTimeOnly: moved to scala-library.jar, got some fixes
Merge pull request #2852 from retronym/ticket/1980-warning

SI-1980 A lint warning for by-name parameters in right assoc methods
Alter TailRec to have map and flatMap

As described in the "Stackless Scala with Free Monads" paper

scala> import scala.util.control.TailCalls._
import scala.util.control.TailCalls._

scala> :paste
// Entering paste mode (ctrl-D to finish)

def isEven(xs: List[Int]): TailRec[Boolean] =
  if (xs.isEmpty) done(true) else tailcall(isOdd(xs.tail))

def isOdd(xs: List[Int]): TailRec[Boolean] =
  if (xs.isEmpty) done(false) else tailcall(isEven(xs.tail))

// Exiting paste mode, now interpreting.

isEven: (xs: List[Int])util.control.TailCalls.TailRec[Boolean]
isOdd: (xs: List[Int])util.control.TailCalls.TailRec[Boolean]

scala> isEven((1 to 100000).toList).result
res0: Boolean = true

scala> def fib(n: Int): TailRec[Int] =
     |   if (n < 2) done(n) else for {
     |     x <- tailcall(fib(n - 1))
     |     y <- tailcall(fib(n - 2))
     |   } yield (x + y)
fib: (n: Int)util.control.TailCalls.TailRec[Int]

scala> fib(40).result
res1: Int = 102334155