SI-7126 Account for the alias types that don't dealias.

After this change:

    qbin/scalac -Ydebug test/files/pos/t7126.scala 2>&1 | grep warning
    warning: dropExistential did not progress dealiasing Test.this.T[Test.this.T], see SI-7126
    one warning found

T[T]? Really? The true bug lies somewhere else; the comments of
the ticket illuminate the general areas of concern.
SI-7183 Disable unreachability for withFilter matches.

This avoids spurious unreachable warnings on code
that the user didn't write.

The parser desugars for-comprehensions such as:

    for (A(a) <- List(new A)) yield a

To:

    List(new A()).withFilter(((check$ifrefutable$2) =>
      check$ifrefutable$2: @scala.unhecked match {
       case A((a @ _)) => true
       case _ => false
      })
    )

But, if `A.unapply` returns `Some[_]`, the last case is dead code.
(Matching against a regular case class *would* fall through in
the caes of a null scrutinee.)

In SI-6902, we enabled unreachability warnings, even if the
scrutinee was annotated as @unchecked. That was consistent
with the 2.9.2 behaviour, it was only disabled temporarily
(actually, accidentally) in 2.10.0. But, the old pattern matcher
didn't warn about this code.

This commit makes the pattern matcher recognise the special
scrutinee based on its name and disables both exhaustivity
*and* unreachability analysis.

To do so, the we generalize the boolean flag `unchecked` to
the class `Suppression`.
SI-7126 Eliminate a source of malformed types.

The kind-polymorphic nature of Nothing and Any in
concert with type argument inference could lead to
types like `T[T]` (where `type T=Any`).

Compensatory action is taken later on to recover;
see the usages of `TypeRef#typeParamsMatchArgs`.
But this these types have a nasty property, they
can dealias to themselves. Callers recursing through
types who fail to account for this hit an infinite
recursion, as was reported in SI-7126.

This commit simply dealiases `T` when registering
the type bound in `unifySimple`.

We should try to weed out additional sources of
these types.
Merge pull request #2167 from retronym/ticket/7126

SI-7126 Account for the alias types that don't dealias.
Merge pull request #2168 from retronym/ticket/7183

SI-7183 Disable unreachability for withFilter matches.
test.done again checks bin compat (using mima 0.1.5)
[nomaster] SI-7195 minor version mustn't introduce warnings

We want 2.10.1 to be a drop-in replacement for 2.10.0,
so we can't start warning where we weren't warning in 2.10.0.

See SI-5954 (#1882, #2079) for when it was an implementation restriction,
which was then weakened to a warning. It's now hidden behind -Ydebug.
Merge pull request #2189 from adriaanm/ticket-7195

[nomaster] SI-7195 minor version mustn't introduce warnings
Merge pull request #2190 from adriaanm/test-runs-mima-2.10.1

test.done again checks bin compat (using mima 0.1.5)
simplify dependencies between patmat components, remove self types
move sat solving to separate file
better names for components of MatchTranslator
[port] SI-7183 Disable unreachability for withFilter matches.

This is a forward port of #2168 (originally for 2.10.1,
but the pattern matcher has since been refactored in 2.10.x.)
Merge 2.10.1 into 2.10.x

The fix for SI-7183 in 440bf0a8c2 was forward ported in f73d50f46c.

Conflicts:
	src/compiler/scala/tools/nsc/typechecker/PatternMatching.scala
Merge pull request #2193 from adriaanm/patmat-refactor

merge 2.10.1 into 2.10.x