[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: 
> `sets should have a way to be merged` that sounds promising, but I defer to @alloy on this one.

I guess that eventually we should have a way to make an aggregate source of just the sources that the user specified in their Podfile and then the resolver only needs to query that, but that means sets need to be able to merge anyways, so that sounds like the way to go now.