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
Stackless implementation of TailRec in constant memory.
Removing orphan check/flag files.
Limit bad advice given for erroneous pattern.

Don't suggest "_: <none>" as an alternative when the pattern
type doesn't conform to the expected type.
Restore --show-diff to partest-ack.

Looks like that issue was operator error. However partest
option --show-log really has gone missing.
Correcting scaladoc for all classes defining withDefaultValue method.
The description of the single parameter seems to be a copy and paste mistake from withDefault method.
SI-7810 Reflect private constructor

`JavaMirror.constructorToJava` uses `getDeclaredConstructor` now
instead of `getConstructor`.
Eliminate TypeTrees with null original.

This is a retry of #2801 after figuring out the range position
error. Should there be anyone out there who compiles with -Xdev,
know that this commit eliminates the 1406 errors one presently
incurs compiling src/library.

A val declared in source code receives only one tree from the
parser, but two are needed - one for the field and one for the
getter. I discovered long ago that if the val had an existential
type, this was creating issues with incompatible existentials
between the field and the getter. However the remedy for that
did not take into account the whole of the wide range of super
subtle issues which accompany tree duplication.

In particular, the duplicated tree must be given not only a
fresh TypeTree(), but that TypeTree cannot share the same
original without running afoul of range position invariants.
That's because typedTypeTree resurrects the original tree with
whatever position it has - so the "original" needs to be a
duplicate of the original with a focused position.

Should the call to TypeTree.duplicate also duplicate the original?
I think so, but I bequeath this question to others.

This commit also eliminated some duplicate error messages, because
duplicate suppression depends on the errors having the same position.

See c478eb770d, 7a6fa80937 for previous related work.
SI-7791 Line number table reflects underlying file

Since positions ultimately know their ultimate
positions in their ultimate source, use that line
number, ultimately, when emitting line number
table entries.

It is possible, but possibly not useful, to emit
both the actual (ultimate) line number and the
nominal one.

The `int`-valued line number of the `StackTraceElement`
is "derived" from the attribute.

In global, wrapping a `BatchSourceFile` as a
`ScriptSource` happens in `compileSources` to
facilitate testing.

A `ScriptTest` facility is provided to facilitate
testing the script facility. It is rather facile.
add toolbox-based utility methods to quasiquotes' tests
refactor definition tests into separate subsuite
add missing copyTypeDef utility function
rename mkAnnotationCtor into mkAnnotation
merge flagsFromBits and FlagsAsBits into FlagsRepr
use NoMods and NoFlags for reification of empty values
move mkNew from tools.nsc.ast.TreeGen to reflect.internal.TreeGen

This is needed for quasiquotes to implement SyntacticNew combinator.
minor changes to TreeGen.mkTemplate

1. Make superPos parameter optional with default value NoPosition
2. use Option instead of List for local optional constructor variable
reduce amount of clutter on -Yquasiquote-debug
SI-7196 add support for refineStat splicing and extraction
refine block and applied/typeapplied splicing/matching semantics

1. blocks now match single term-level expressions to account for
   automatic block elimination. E.g.

   val q"{ ..$stats }" = q"foo"

   will match into stats = List(q"foo"). This is useful to uniformly
   deal with blocks on term level.

2. blocks in quasiquotes collapse into single expressions

3. Applied and TypeApplied now have constructors too which helps
   to unify matching and extraction in quasiquote reifier

4. TypeApplied now matches AppliedTypeTree too

5. Add Syntactic prefix to Applied and TypeApplied