Use explicit return for clarity
Try all possibles from a state

When a state was found for a conflict, only the first possible was
tried.  The remaining possibles were discarded.

This meant that the resolver could not search all possible
configurations of gems.

Part of #699
Add State#summary for debugging purposes
Prevent unbounded growth of conflicts

Previously the conflicts list could grow without size, filled with
duplicate conflicts.  Now it is checked for matching conflicts before a
new one is added.