Extract find_possible out of resolve_for

find_possible is expected to grow new features as support for #596 is
added.
Extract resolve_for_single from resolve_for

This reduces the complexity of resolve_for some.
Extract resolve_for_zero from resolve_for

This reduces the complexity of resolve_for some.
Extract resolve_for_multiple from resolve_for

This reduces the complexity of resolve_for some.
Extract find_conflict_state from resolve_for

This reduces the complexity of resolve_for some.
Fail early in resolve_for state rewind

This reduces the indentation a little and makes it easier to apply the
next refactor.
Rename "i" to "state" in resolve_for

Otherwise each reader will need to figure out what "i" is all over
again.
Extract resolve_for_conflict from resolve_for

This reduces the complexity of resolve_for some.