Improve DependencyResolutionError#message

By default, the message did not include the reasons for the exception.
Now it does.
Add "user request" as conflict explanation

When the gem is explicitly chosen by the user (via `gem install` and
friends or from a Gemfile) the explanation would say nothing useful
following "via".  Now it says where the dependency came from.
Warn on over-strict pessimistic dependencies

When a user builds a gem with ~> 1.2.3 or similar, RubyGems warns if the
dependency may be overly strict and recommends a better dependency.