A fix for issues #3089, #3216 and #3248

Currently Bundler is aggressive to try different
versions of exsiting gem parents before
exhausting different versions of parents of
current conflicting gem.

By making sure we travase the current conflicting
dependency tree before trying to make use of exsiting
(activated) gem dependency tree, we reduce the number of
conflicts and activation of gems older then the latest
compitable version.

However, a long term solution would be to make the resolver smarter
by making it understand if current requirement conflict is caused by
either by it's parent or existing gem parent by looking at each of their
dependency requirements.
Fixes issue #3059

Currently Bundler tries different versions
of current gem and than it's parents and finally
existing gems.

However, when trying different versions of current gem
will cause it to conflict with existing gem version and
sometimes it will be unable to resolve the dependency tree
correctly.

Now, we will try to resolve current gems parent first then
current gem and then finally the exisiting gems.
Don't waste iterations in resolving Bundler, just use the current version
Add specs to check edgecases for the resolver
Don't run handle_conflict if parent already has other possibilities
Add changelog for 1.7.8
Revert "Don't waste iterations in resolving Bundler, just use the current version"

This reverts commit d672064dbd3ea69144d43f66cbf0b6a926fbe0a9.
On conflict, try traversing the dependency tree differently
New realworld specs depend on ruby >= 1.9.2
Merge pull request #3278 from bundler/resolver_bug_fix

Resolver bug fixes and improvements

Conflicts:
	CHANGELOG.md