[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: 
`Source#search` has now been optimized.