inference: revisit all methods in cycle (#59974)
When encountering complicated cycles within cycles, make sure to revisit
all applicable methods explicitly, since not all methods within the
cycle will necessarily change return type after resolving the cycle.
This shows up as the possibility of frames that don't get revisited
before being cached, probably just caching `Union{}` as the call type
instead. I always assumed this code was probably wrong, but didn't have
any way to construct the counter-example to have confidence that fixing
it would not cause some other side-effect. But still keep the backedge
work lazy, since we don't want to allocate unnecessarily for a rarely
used feature (recursion).
Fix #59943