SI-7704 Fix partest's test category selection

My recent changes to command line parsing in 6090709 broke partest's
functionality of picking test categories (e. g. --pos or --run).

The breakage was caused because scala.tools.cmd._ stored the command
line options with the `--` prefix, but TestKinds.standardKinds did not.
Add some explicit return types to s.t.c._
Clean up ConsoleRunner, --> returns Boolean ...

... not Unit now.
Bug fix ! , if $color_opts is unset partest script does not work.
SI-7544 Interpolation message for %% literal

The new error text: "conversions must follow a splice; use %% for
literal %, %n for newline".

The error is emitted when % is not at the start of a part; only
the non-conversions %% and %n are allowed.

It would be nice if it were convenient to parse the part to see
what the user may have intended, but c'est l'erreur.
In tests, interpolation is no longer -Xperimental.
StringContext#checkLengths reports bad args count

Since interpolator args are of type Any, it's easy
to write s(args) instead of s(args: _*).  I wonder
if Xlint would have warned me about that.
SI-7658 Prevent StackOverflowError in ScalaRunTime.stringOf
Remove unused private[scala] def ScalaRunTime.checkZip
SI-7715 String inpatternation s"$_" for s"${_}"

In a pattern,

```
scala> implicit class RX(val sc: StringContext) {
     | def rx = sc.parts.mkString("(.+)").r }
defined class RX

scala> "2 by 4" match { case rx"$a by $_" => a }
res0: String = 2

scala> val rx"$_ by $b" = "2 by 4"
b: String = 4
```
SI-7470 implements fundep materialization

This fix provides implicit macros with an ability to affect type inference
in a more or less sane manner. That's crucial for materialization of
multi-parametric type class instances (e.g. Iso's from shapeless).
Details of the technique can be found in comments.
Added a warning from scala runner script.
add assertThrows testing utility function

This is much easier to use than built-in JUnit method-level checks.
SI-7731 make CannotHaveAttrs more consistent

Previously setPos, pos_=, setType, tpe_= all behaved inconsistently
between each other even though they all represent similar
attributes that cannot be changed on CannotHaveAttrs trees.

In order to simplify handling of such trees in compiler code each
of these fields now supports assignment to its current default
value: NoType for tpe and NoPosition for pos. Such assignments
don't mutate underlying trees.
refactor parser entry points and extract a few methods out

This commit contains three logical changes:

1. Split `templateStatSeq` into two methods as we need more reliable
   parsing of template body alone for new `parseStats` entry point.

2. Add new parser entry point called `parseStats` which is aimed towards
   use in tools that require parsing of Scala code that can be written
   inside of a template.

   Such functionality is required for parsing lines in repl, parsing
   code through toolbox, parsing and running scala scripts and lastly
   for quasiquotes. All of them are refactored to use this very method
   in the next commits.

   A new method called `templateStatsCompat` is also added to make this
   commit pass the tests but it's a temporary hack that will be removed
   in next commit in favor of `parseStats`.

3. Extract out a few methods like `isCaseDefStart`, `expectedMsgTemplate`
   and `parseRule`. These are needed to override parser behaviour in
   updated quasiquotes parser (see next commits).
refactor repl to use new new parser entry point

This commit refactors repl to use `parseStats` entry point and
streamlines hacky error handling that was previously used to
encode errors that happen during parsing.
SI-7331 remove all the wrapping code from toolbox

Change toolbox parsing to use `parseStats` parser entry point
instead of current code-wrappign technique that makes positions
much less useful to end users.

There is also no need to create a compiler `Run` for parsing.
SI-6843 well-positioned syntax errors for quasiquotes

This is achieved in a following way:

1. Similarly to toolbox quasiquotes can go away with wrapping for
   parsing purpose after introduction of `parseStats` and `parseRule`
   entry points.

2. In case of syntax error quasiquote computes equivalent corresponding
   position in the source code with the help of `corrrespondingPosition`
   mapper which relies on position data collected into `posMap` during
   code generation.
SI-7681 Remove scala.tools.nsc.io.DaemonThreadFactory
Clean up imports in s.t.n.interpreter.IMain