Add DependencyRequest#requirement

This makes Gem::DependencyResolver::DependencyRequest behave more like
Gem::Dependency which it wraps.
Simplify find_conflict_state

For some reason this changes the exceptions raised by the resolver
because it follows a different path.  I'm unsure what to make of it, but
it still raises exceptions in the correct place, just not
Gem::ImpossibleDependenciesError.

@evanphx should review this commit.
Try all states when resolving dependencies

DependencyResolver#find_conflict_state chose only the state with a
matching dependency and ignored all other states.

This meant that if there was another state that would result in
successful resolution of the states the resolver would never try it.

Now find_conflict_state prefers selecting a state with a matching
dependency, but returns the first state if that did not work out.  This
allows the resolver to backtrack successfully.

@evanphx should review this commit.