SI-8177 co-evolve more than just RefinedTypes

`asSeenFrom` produced a typeref of the shape `T'#A` where `A` referred to a symbol
defined in a `T` of times past.

More precisely, the `TypeRef` case of `TypeMap`'s `mapOver` correctly modified a prefix
from having an underlying type of `{ type A = AIn }` to `{ type A = Int }`,
with a new symbol for `A` (now with info `Int`), but the symbol in the outer
`TypeRef` wasn't co-evolved (so it still referred to the `A` in `{ type A = AIn }`
underlying the old prefix).

`coEvolveSym` used to only look at prefixes that were directly `RefinedType`s,
but this bug shows they could also be `SingleType`s with an underlying `RefinedType`.
A reimagining of coevolveSym.

My approach was: lookup up the TypeRef's symbol's name in the
new prefix (and look for any member, not only decls and not
only certain subclasses of Type.) If that symbol is different
from the TypeRef's symbol, and if the new symbol has within its
override chain a symbol which is overridden by the old symbol,
then return the newly looked up symbol.

Other notes:

neg/t4137 should issue more errors
neg/lubs I don't know if it makes sense
neg/{ t608, t0764, t8104 } all become pos tests, and to my eye
  that is correct in all cases.