Dup the req list before using so we keep the state pristine for backtracking
Make error more verbose
Add more debugging info resolver tracking
Walk back through states directly

We no longer keep around states that can't initially use because they
represent failed branches within the search tree. Instead we modify the
code that decides which state to return to, so that we don't unwind the
tree too far each time.
Merge branch 'master' of github.com:rubygems/rubygems