SI-7757 disallow constructor annotations on traits

Previously it was possible to define constructor annotations on traits
with really weird side-effects (parser lost the body of the trait). Now
constructor annotations on traits will cause appropriate syntax errors.
SI-7757 add additional test case with annotation on the next line
SI-7756 Uncripple refchecks in case bodies

In 65340ed4ad2e, parts of RefChecks were disabled when
we traversed into the results of the new pattern matcher.
Similar logic existed for the old pattern matcher, but in
that case the Match / CaseDef nodes still existed in the tree.

The new approach was too broad: important checks no longer
scrutinized the body of cases.

This commit turns the checks back on when it finds the remnants
of a case body, which appears as an application to a label def.
SI-7729 Fix broken windows build

Fixing #ifdiff uncovered a latent bug in partest when it detects
paths to normalize in test log output.  It would not normalize
file separators for test names with non-word characters.

This commit normalizes the test name to the ticket number as a
workaround until the next partest version is picked up.

It also fixes partest in this repo in case we've not yet switched
over to the new repo.  A separate PR will be submitted to the new
repo as necessary.
Merge pull request #2839 from densh/topic/si-7757

SI-7757 disallow constructor annotations on traits
Merge pull request #2854 from som-snytt/issue/7729-slash

SI-7729 Fix broken windows build
Merge pull request #2840 from retronym/ticket/7756-2.11

SI-7756 Uncripple refchecks in case bodies
Alter TailRec to have map and flatMap, as described in the "Stackless Scala" 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