SI-8376 Fix overload resolution with Java varargs

When comparing specificity of two vararg `MethodTypes`, `isAsSpecific`
gets to:

```
  case mt @ MethodType(_, _) if bothAreVarargs =>
    checkIsApplicable(mt.paramTypes mapConserve repeatedToSingle)
```

The formal parameter type of a Java varargs parameter is represented
as `tq"${defintions.JavaRepeatedParamClass}[$elemTp]"`. For a Scala
repeated parameter, we instead use `defintions.RepeatedParamClass`.

`bothAreVarargs` detects `JavaRepeatedParamClass`, by virtue of:

```
def isRepeatedParamType(tp: Type)      = isScalaRepeatedParamType(tp) || isJavaRepeatedParamType(tp)
```

But, `repeatedToSingle` only considers `RepeatedParamClass`.

This bug was ostensibly masked in 2.10.3, but became apparent after
a not-quite-refactoring in 0fe56b9770. It would be good to pin that
change down to a particular line, but I haven't managed that yet.
SI-8376 Better type printing for Java varargs

`T*` rather than `<repeated>[T]`, as we alreday do for Scala repeated
parameters.
SI-8363 Disable -Ydelambdafy:method in constructor position

As @magarciaEPFL has done in his experimental optimizer [1], we can
avoid running into limitations of lambdalift (either `VerifyError`s,
ala SI-6666, or compiler crashes, such as this bug), by using the
old style of "inline" lambda translation when in a super- or self-
construtor call.

We might be able to get these working later on, but for now we
shouldn't block adoption of `-Ydelamndafy:method` for this corner
case.

[1] https://github.com/magarciaEPFL/scala/blob/GenRefactored99sZ/src/compiler/scala/tools/nsc/transform/UnCurry.scala#L227
SI-8366 make partial function and match trees disjoint

Previously one could match a partial function with match quasiquote:

    scala> val q"$scrutinee match { case ..$cases }" = q"{ case Foo => Bar
    }"
    scrutinee: universe.Tree = <empty>
    cases: List[universe.CaseDef] = List(case Foo => Bar)

This was quite annoying as it leaked encoding of partial functions as
Match trees with empty tree in place of scrutinee.

This commit make sure that matches and partial functions are disjoint
and don't match one another (while preserving original encoding under
the hood out of sight of the end user.)
Add more tests for partial functions
SI-8392 Guards QuasiquoteClass against non-availability in scala-reflect

This assimilates behavior on Quasiquotes to the one on Reflection : if
we don't have the right resource on classpath, we do without rather
than throwing.

See the bug report for more on rationale (-Xsource flag, early
quasiquote loading in Analyzer through FastTrack, etc).

Review by @gkossakowski  or @xeno-by
Merge pull request #3604 from densh/si/8366

SI-8366 make partial function and match trees disjoint
Merge pull request #3616 from retronym/ticket/8363

SI-8363 Disable -Ydelambdafy:method in constructor position
Merge pull request #3619 from huitseeker/issue/SI-8392

SI-8392 Guards QuasiquoteClass against non-availability in scala-reflect
SI-8395 Regression in pattern matching with nested binds

Regressed in https://github.com/scala/scala/pull/2848. In particular,
see 0cf47bdb5b and 017460e63c.

Because of the regression, this pattern:

    (s @ (_s @ (_: String)))

was translated into `typeTestStep`, rather than a `bindingStep`. This
came down the the use of `unbind` in the `TypeBound` extractor.

My first step was to remove the `unbind`. That led to another
problem: the tree now matches `SymbolAndTypeBound`, which extracted
`symbol = s, tpe = String`, ignoring the `_s`. I changed that
extractor to no longer recursively apply to the sub-pattern tree,
which is what `MaybeTypedBound` used to do.

I also checked for other uses of `unbind` in the match translation.
The only place I found it is in `BoundTree#pt`. I believe that this
usage is correct, or at least, not obviously incorrect.
Merge pull request #3615 from retronym/ticket/8376

SI-8376 Fix overload resolution with Java varargs
Merge pull request #3622 from retronym/ticket/8395

SI-8395 Regression in pattern matching with nested binds
SI-8407 "symbol not found" in Scaladoc use cases: warning only

The refactoring in aedec1980 mistakenly used the non-silent
typer to typecheck the use cases. It temptingly had the desired
type (`ScalaDocAnalyzer`), but sadly the wrong properties (it will
report errors, rather than buffer.)

This meant that "symbol not found" errors in use cases would prevent
Scaladoc generation.

This commit introduces a little downcast on the silent typer.
A more principled approach would be to go through the rigmarole
of the virtual class pattern for `Analzyer.Typer`, but that will
have to remain work for another day.
Merge pull request #3627 from retronym/ticket/8407

SI-8407 "symbol not found" in Scaladoc use cases: warning only