Fix variable warnings
Remove redundant test
Fix uninitialized variable warning

This was caused by Source#== which uses @uri, so subclasses need to
define it.
Simplify Source#==, the case was unnecessary
Use terminate_interaction in InstallCommand

This is the proper API to use, raising exceptions is wrong.
install_from_gemdeps raises, this line is not reached
Merge pull request #694 from jonleighton/stubbed

Provide API for checking if a gemspec has a stubline
Add #694 to History
Install gems when $HOME does not exist

During gem installation RubyGems caches files in the home directory.  If
the home directory did not exist or was unwritable RubyGems would raise
an exception even though it had the ability to avoid updating the cache.

Now, when checking to see if the cache should be updated, RubyGems
no longer raises an exception.

Fixes #689
Remove extra '..' in require_paths

When a gem has extensions, require_paths includes a relative path to the
extension install directory.  This relative path included an extra '..'
because I forgot that the other require_paths were relative to
the #full_gem_path, not the lib directory.

Reported by Santiago Pastorino
Fix updating gems which have multiple platforms

After @0000d57 for #688 was committed, when updating a gem with multiple
platforms a TypeError would be raised.  This occurred because a
PlatformMismatch error was returned which we don't care about in the
update command.

The PlatformMismatch is not an Exception so it could not be raised.  Now
only errors that respond to #exception are raised, which is a poor way
of ignoring the PlatformMismatch errors inside fetch_remote_gems.

Fixes #693
Raise a meaningful exception for missing gemspecs

For the path option in a gem dependencies file, if the gemspec was
missing a NoMethodError was raised which didn't make any sense.

Now a Gem::GemNotFoundException is raised which has a message that will
help the user understand what they need to fix.
Add pretty_print for Gem::List
Support minitest 4 output in autotest

Without this minitest does not operate correctly as it cannot discover
the method and class names.
Improve Gem::Specification pretty print

Now the name and version are at the top where they're easier to read.
Fix conflict resolution for toplevel dependencies

When a conflict for a user-specified dependency was encountered in
DependencyResolver#handle_conflict the resolver would crash as no
requester was available.

Now we use the original dependency for the conflict as that is the only
one available.

I think @evan should review this change.
Replace assert_set with assert_resolves_to

The assertion now calls #resolve on the input which will allow printing
of the explanation when resolution fails.
Improved assert_resolve_to failure message

Now the explanation is included.
Add Specification#installed_by_version

This tracks the version of rubygems that installed a gem.  This will be
used to determine if extensions need to be built for the gem, as the
current checks are insufficient for gems installed with older versions
where the extensions are already built.
Only build extensions for newly installed gems

This prevents compilation attempts during gem activation for gems
installed by previous versions of RubyGems which already have the
extensions built.