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.
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.
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.
SI-7805 REPL -i startup

Tested with a ReplTest that loads an include script.

ReplTests can choose to be `Welcoming` and keep a
normalized welcome message in their check transcript.

One recent SessionTest is updated to use the normalizing API.
Merge pull request #2917 from som-snytt/issue/7805-repl-i

SI-7805 REPL -i startup
Merge pull request #2900 from nermin/master

Correcting scaladoc for all classes defining withDefaultValue method.
Merge pull request #2865 from folone/trampolines

Alter TailRec to have map and flatMap
Merge pull request #2885 from som-snytt/issue/7791-script-linenums

SI-7791 Line number table reflects underlying file
Merge pull request #2907 from paulp/pr/typetree-original-rangepos

Eliminate TypeTrees with null original.