Refactors AsSeenFromMap to expose extension point.

The extension point was the initial motivation but I also tried to
bring some clarity to the internals. This is a setup commit for
scaladoc and interactive modularization, and also will be followed
by a fix for abstract types losing their prefixes (SI-6161.)
Simplified correspondingTypeArgument based on reviewer feedback.
Establishes what's up with widening in asSeenFrom.

Added explanatory comment.
Merge pull request #2163 from paulp/pr/as-seen-from

Refactors AsSeenFromMap to expose extension point.