SI-6925 use concrete type in applyOrElse's match's selecto

Fix a regression introduced in 2848373:

PartialFunction synthesis was broken so that we'd get:
```
scala> def f[T](xs: Set[T]) = xs collect { case x => x }
f: [T](xs: Set[T])scala.collection.immutable.Set[_ <: T]
```

rather than
```
scala> def f[T](xs: Set[T]) = xs collect { case x => x }
f: [T](xs: Set[T])scala.collection.immutable.Set[T]
```

reworked partial function synthesis while I was in the neighborhood
no functional changes (intended) in the second commit

review by @retronym