Convert #resolve_for into an iterative algorithm (for profit)
Comments and warning fixes
Added multiple argument handling to gem list
Refactored to Gem Query
Finishing Query touches
fix logic of register_default_spec
fix Gem::Specification to always return files in a predictably sorted order
suppress list source header if only one type requested with --quiet
Remove HACK tag missing an answer to "why?"
Fix pretty-print output for local sources

It is confusing to see "[Remote: ]" in the output for a local source.
Place the remote source first when sorting

The dependency resolver prefers the last source to use for installing a
gem as it will be the source containing the highest version for remote
gems.  Local gems (installed or as .gem files) need to be higher because
the user is requesting those specifically.

This prefers a named local gem over a remote gem with the same version
which saves a fetch and allows use of a modified and repackaged local
gem.

Fixes #616
Fix typo in assertion message
SpecificFile for different gems are not ordered

The resolver orders by source when choosing which gems to install.  The
highest version needs to come last in the list, but as SpecificFile used
an inherited <=> no check would be made.

Using Source#<=> could result in some incorrect results that should only
arise due to bugs such as comparing a-1.gem to b-2.gem (the check for
matching names is a sanity check).  It also gave some nonsense results
such as comparing a SpecificFile with itself would result in -1 (instead
of 0).

Now SpecificFile only delegates to Source for comparisons that aren't
with other objects of the same class.  For SpecificFiles with a
different name nil is returned, otherwise the versions for the two specs
are compared.
Add documentation and test against self

Commit miss
Test Gem::Source::Installed#<=>
Improve Gem::Source::Local#<=> tests
Fix Source::Local#inspect when unloaded

Previously #inspect would raise an exception resulting in less than
useful output when playing in irb.  I'm unsure when you would inspect an
unloaded local source otherwise.
Sort Source::Local#inspect output for convenience
Undent
Undent