merge the patmat refactoring into master

see #2120 -- nothing to see here but the merge commits:

```patch
 -  def newTransformer(unit: CompilationUnit): Transformer =
 -    if (opt.virtPatmat) new MatchTransformer(unit)
 -    else noopTransformer
++  def newTransformer(unit: CompilationUnit): Transformer = new MatchTransformer(unit)
```

```patch
+   // 2.10/2.11 compatibility
 -  protected final def dealiasWiden(tp: Type)   = tp.dealias                       // 2.11: dealiasWiden
 -  protected final def mkTRUE                   = CODE.TRUE_typed                  // 2.11: CODE.TRUE
 -  protected final def mkFALSE                  = CODE.FALSE_typed                 // 2.11: CODE.FALSE
 -  protected final def hasStableSymbol(p: Tree) = p.hasSymbol && p.symbol.isStable // 2.11: p.hasSymbolField && p.symbol.isStable
 -  protected final def devWarning(str: String)  = global.debugwarn(str)            // 2.11: omit
++  protected final def dealiasWiden(tp: Type)   = tp.dealiasWiden
++  protected final def mkTRUE                   = CODE.TRUE
++  protected final def mkFALSE                  = CODE.FALSE
++  protected final def hasStableSymbol(p: Tree) = p.hasSymbolField && p.symbol.isStable
```