WIP SI-7459 Handle pattern binders used as prefixes in TypeTrees.

Match translation was incorrect for:

  case t => new t.C
  case D(t) => new d.C

We would end up with Types in TypeTrees referring to the wrong symbols, e.g:

  // t7459a.scala
  ((x0$1: this.LM) => {
    case <synthetic> val x1: this.LM = x0$1;
    case4(){
     matchEnd3(new tttt.Node[Any]())
    };
    matchEnd3(x: Any){
      x
  }

Or:
   // t7459b.scala
    ((x0$1: CC) => {
      case <synthetic> val x1: CC = x0$1;
      case4(){
        if (x1.ne(null))
          matchEnd3(new tttt.Node[Any]())
        else
          case5()
      };

TODO: in the following, we end up with unsubstituted references to `x` in the body of the case.

object Test extends App {
  class C { class D }

  case class FooSeq(x: Int, y: String, z: C*)

  FooSeq(1, "a", ???) match {
    // case FooSeq(1, "a") => println("nope")
    case FooSeq(1, "a", x@_* ) =>
      //println(x.toList)
      null.asInstanceOf[x.type]
  }