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.