Use DependencyRequest#match?

We don't want to look at its insides, just use the methods it provides.
Track if a Set is allowed to match prereleases

This only adds the API.  Now a Set can match a prerelease version when
finding requirements.

Part of #990
Override dependency matching against prereleases

Now matching a dependency against a prerelease version of a gem can be
enabled with an optional, hidden third argument.
Propogate InstallerSet#prerelease= to #remote_set

The InstallerSet contains a set so it needs to pass the prerelease flag
down.

Maybe InstallerSet should be a ComposedSet?  It doesn't always use the
remote set, though, so maybe not.

Part of #990
Set prerelease acceptance from resolver

Now the resolver informs the various sets about if they should allow
prerelease dependencies or not.  This allows RubyGems to match past
behavior.

Part of #990
Pass prerelease option on from DependencyInstaller

This allows RubyGems to consider prerelease dependencies as it did for
prior releases.

Fixes #990