Optimization in InstantiateDependentMap

Avoid creating a throwaway array in existentialsNeeded.
Implicits: Move shadowing checks after plausibility checks

Shadowing is rarer than implausbility; this seems to be
the most efficient way to order these filters.
More overrides for SetN
Optimize lookup of tree/symbol attachment search.

Use `hasAttachment` rather than `getAttachment.exists`
Optimize use of methodTypeSchema

Cache it, rather than recreating it for each candidate overriden
method we encounter.

We can't do this eagerly as we trip a cycle in neg/t5093.scala.