FSC / REPL Bug Bonanza

The big contribution here is to change `adaptInfos` to
start with a clean slate (a one element type history)
on subsequent runs. I did the same a while back for package
classes, this is an generalization of that idea. This ensures
that all info transformers are run, importantly the side-effecty
ones.

This fixes a regression in specialization in the REPL, which
was a latent bug uncovered by our recent fix to `perRunCaches`.

The other changes are similarly themed, being more disciplined
when reading or mutating the type history.

Submitting for a test run and initial review by @lrytz. The commit
messages might need some fleshing out as I've been a little bit
hand wavy in a few of my explanations where I wasn't able to
precisely explain *why* the fix works.