Make it easier to avoid StackOverflowErrors with promotion and conversion
promoted_noncircular is somewhat similar to (but more general than) promote_to_supertype. It is not quite as atsign-pure, so the existing mechanism is also retained.
Fixes #12007, fixes #10326, fixes #15736