SI-7228, bug in subtyping.

Make isWeakSubType more frequently correct. Simplify widening logic.