Begin move to DependencyResolver for installation

This is a work-in-progress that, at least, doesn't give errors for most
tests.  Due to incomplete integration many DependencyInstaller tests
still fail due to not installing enough gems.

A new resolver set was added, Gem::DependencyResolver::InstallerSet,
which handles both local and remote gems.  This should either be merged
with IndexSet or contain an IndexSet for remote operation.

Also, a typo in UnsatisfiableDependencyError was corrected.
Fix force installing (and thus dep resolution)
Support installing development dependencies

Now AvailableSet#to_request_set accepts a development boolean parameter
which adds the set's development dependencies to the created RequestSet
when true.  This allows installation of only the direct development
dependencies.
Add only installed gems in DependencyInstaller

RequestSet#install yields nil instead of an installer if the gem was not
installed, so only gems with an installer should be added to the
installed list.

This fixes several test errors.
Prefer installed gems over remote gems

Now DependencyInstaller knows about installed gems via Installer set.
This allows installed gems that meet a dependency to be preferred over
local or remote gems.

This minimizes the amount of downloading we do and allows developers to
install updated but unreleased versions for testing.
Revert accidental `git add .`
Ignore /*.gemspec
Installed source doesn't need initialization

DependencyResolver automatically detects that a Source::Installed is
already installed, so no data from the specification is necessary.
Fix installation with installed gems

This fixes breakage added in other DependencyInstaller tests after
adding recognition of installed gems.
Implement deep development dependency installation

For --development, development dependencies are added when creating the
RequestSet so they don't leak into full resolution.  For
--development-all, development dependencies are looked up for each gem
during resolution.

I have no recollection of why --development-all exists in Rubygems, but
it was probably a bad implementation by me.
Implement --ignore-dependencies

The test still fails as named gems are not installed even if they
already exist.
Use existing method for fetching specifications
InstallerSet now finds the correct local .gem

Previously InstallerSet#find_all would find only the latest version as
it did not provide the requirement to use.  Now the requirement is given
which selects the correct version and removes a useless check.
Improve inspectability of NameTuple and Source::Local
Always install gems given to `gem install`
Remove newline for clarity
Fix --ignore-dependencies

Previously the current set of installed gems was used.  This created
incorrect behavior if the gem was already installed.

Now we rely on the always_install list and return no dependencies unless
the gem already exists in the always_install list.  This means the gem
will always be installed (as it was listed).
Match --minimal-deps test to its description

`gem help install` says "Don't upgrade any dependencies that already
meet version requirements" for --minimal-deps.  However, the test does
not provide an option to upgrade and stops once a direct dependency has
been met, even if the set is incomplete.

Now we traverse all the dependencies and have a newer version of a
dependency available to install.  This ensures a complete set is
installed.
Moved --minimal-deps test
Add prerelease support to InstallerSet

Previously only released remote specs were looked up in InstallerSet.
Now both released and prerelease remote specs are looked up.

Remote spec lookup is also lazy and deferred until first needed.