Performance improvement: Avoid most operations in interpolateUndetVars

Perform the operation only if there are qualifying type variables, which is rarely the case.
Reverted variances optimization to simpler and shorter previous implementation, because variances
is no longer hot.
Reord of superIds

1) We now keep an association between ClassSymbol and SuperId (instead of TypeRef and SuperId). That's better
   because superId's are deleted anyway after each run, so we gain nothing by keeping a stable ref.
2) hasChildren got dropped. It was too unreliable. The mere fact that someone take's the superId of a class
   does not means that that class has children.
Performance improvements: Split long TypeMap#mapOver and move hot fields into locals.
Performance tweak: Denotation.symbol is a parameter.

This avoids the megamorphic dispatch on symbol before. Looked promising in the profiler (symbol showed up at 9%) but does not seem to gain much in practice. Still, can't hurt to do it.
Performance improvement: Avoid unncecessary allocations of ListBuffer

There were a lot in StoreReporter, as we are creating about 0.5M new ones per self-compile.
Cleanup of isSubType