Improved resolver performance significantly by trimming the search space

Hey folks,

This patch tremendously improves resolver's performance in case of conflicts, let me give an example

so the Gemfile included in this bug report https://bugs.ruby-lang.org/issues/8836 would take about 10-15 mins or so to resolve before throwing a stack level too deep on the old resolver.

Now it takes 1-2 mins before throwing the conflict error,

```
Fetching source index from https://rubygems.org/
Resolving dependencies.........................................................................
Bundler could not find compatible versions for gem "activesupport":
  In Gemfile:
    redis-rails (>= 0) ruby depends on
      redis-activesupport (~> 4) ruby depends on
        activesupport (~> 4) ruby

    rails (~> 3) ruby depends on
      activesupport (3.2.16)
```
While all the current specs are passing, I still feel this should be tested out by few people before we push it out.
(It's just too good to be true :D) 


Finally, this patch is inspired by @evanphx work in rubygems resolver so thanks again!

So, people try this patch out and let me know if there are issues.