[Resolver] Take into account versions from all sources

This is hopefully a fix for https://github.com/CocoaPods/CocoaPods/issues/2556. It works for me.

Before this can be merged, there are several area's where I expect it to need feedback on:
- Ruby (I'm not a rubyist)
- The responsibility for notifying the user that the required version exists in more than one source. From the comments in `Set`, I got that you prefer that the tool should raise exceptions, not the models.
- The type of notification. I am not sure if we want an exception or just a notification (which currently only shows in verbose mode)
- How to test if that notification is outputted.

This PR relies on https://github.com/CocoaPods/Core/pull/181.

Oh, and this: :rainbow: 
I didn't check for performance but I assumed it would be very similar to search. As I now understand from https://github.com/CocoaPods/Core/issues/182 this is the case, but not deliberately so.

I agree that it would be good for the resolver to use `Source#search` so it can be optimised in one place. However, the resolver cannot directly use the`Set` instances returned by `Source#search`, because they only contain a single source. Here are three options I see:
- the resolver could just nil check against the search result
- the resolver creates a new set with the sources from all sets returned by `Source#search`
- sets should have a way to be merged

Do you prefer any of those?