[WIP] Resolver

Closes https://github.com/CocoaPods/CocoaPods/issues/978, https://github.com/CocoaPods/CocoaPods/issues/1489, https://github.com/CocoaPods/CocoaPods/issues/2002

This branch is very much a work in progress, but I wanted to give us a place to discuss the final steps of integrating [the resolver](https://github.com/CocoaPods/Resolver) back into CocoaPods.

This PR won't be merged for a while, so I welcome any and all feedback.

Major (non-code) holdups:
- [ ] Name for resolver gem
- [ ] Launch version for resolver gem
- [ ] Specs for conflict Podfiles that we now support
- [ ] Performance torture testing
- [ ] More complete documentation
- [ ] Analyzer specs for handling implicitly locked dependencies (https://github.com/CocoaPods/CocoaPods/issues/2318)
- [ ] Code review of the resolver gem itself
In cases like these where the one `resolve` method moves to the next line, can you just move this whole block up, store the result in a lvar and pass that to the `resolve` method that can be on the same line as `::Resolver::Resolver.new(self, self)`?