Cleanups in type printing.

More consistency as to how to understand aliases,
singletons, specialized symbols, subclasses. Fewer
weird special casings, like normalizing tuples
and functions during type printing, but nothing else.
I avoid "normalize" entirely now, and do not make
special cases for dealiasing, which is already well
handled when printing error messages.

Look at the change to test/files/neg/t2641.check to get
a sense of why we should resist calling normalize during
the early days of a compilation run.

Anonymous and refinement classes can be printed far more
usefully by revealing their parents, and that too is here.

Hardened toString against undesirable side effects.
Make toString final to discourage any further rogue
toString overriders. Make safeToString a little safer.
Make -Ytyper-debug output readable.
Merge pull request #2746 from soc/topic/paulp-typer-debug-output

Improve type printing (toString/debugging)