[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: 
Actually I now see that the underlying implementation of `Source#search` had already changed in such a way that it is practically equivalent and thus slow.

I’ve created [a ticket](https://github.com/CocoaPods/Core/issues/182) for that issue, but that does mean that it would be beneficial to already keep using `Source#search` so that your code will automatically use the fast path again once that’s fixed. Is there a reason why you couldn’t use that instead? (Note that I’m not talking about the aggregate search method, but on the individual sources instead.)