[Resolution] Add smart backtracking

I'd like to know if there are any performance shortcuts that are obvious here, @floere.

I'd also really appreciate testing this out on some `Podfile`s with resolvable conflicts to make sure the speed increase is real, @kylef @alloy. (I discovered this optimization working with bundler code)

\c @indirect
In Ruby 1.8, select only returns an array. :/

On Sat, Nov 8, 2014 at 7:20 PM, Kyle Fuller <notifications@github.com>
wrote:

>> @@ -194,7 +210,8 @@ def create_conflict
>>          }
>>          vertex.incoming_edges.each { |edge| (requirements[edge.origin.payload] ||= []).unshift(*edge.requirements) }
>>          conflicts[name] = Conflict.new(
>> -          requirements,
>> +          requirement,
>> +          Hash[requirements.select { |_, r| !r.empty? }],
> What's the reason for creating a hash from a hash? Ie:
> ```ruby
> Hash[requirements.select { |_, r| !r.empty? }]
> ```
> Instead of
> ```ruby
> requirements.select { |_, r| !r.empty? }
> ```
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/CocoaPods/Molinillo/pull/11/files#r20056318