Move partest to https://github.com/scala/scala-partest

As partest is now resolved from maven, `test/partest` uses `ant test.suite.init`
to determine the classpath (serialized to build/pack/partest.properties)
that's necessary to run `scala.tools.partest.nest.ConsoleRunner`.

Thus, partest gets exactly the same classpath, whether run from
the command line through `test/partest` or via `ant test`.

The version of partest we're using is specified by
properties defined in versions.properties (formerly `starr.number`).

Currently, we're using:

```
scala.binary.version=2.11.0-M4
partest.version.number=1.0-RC3
```

NOTES:
  - The version of Scala being tested must be backwards binary compatible with
    the version of Scala that was used to compile partest.
  - Once 2.11 goes final, `scala.binary.version=2.11`, and `starr.version=2.11.0`.
  - Need scalacheck on classpath for test/partest scalacheck tests.
  - Removed atrophied ant tests (haven't been run/changed for at least two years
    I checked 81d659141a as a "random" sample).
  - Removed scalacheck. It's resolved as a partest dependency.
  - For now, use a locally built scalap
  - Kept the trace macro in the main repo (partest-extras)
  - New targets for faster pr validation: test-core-opt, test-stab-opt
  - Reused partest eclipse/intellij project to partest-extras
    (note: the partest dependency is hard-coded)
Merge pull request #2851 from adriaanm/modularize

Modularize partest
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