Add Gem::Source::Lock

The lock source wraps the original source and sorts before un-locked
sources.
Add Source::Lock#fetch_spec

This delegates to the wrapped spec so it can act as a stand-in for the
real source.
Add Source::Lock#==

The superclass Source#== issues a warning when called, so restore
Comparable#<=>'s behavior.
Hide Source::Lock#<=> from documentation
Ignore missing .lock files for gem dependencies

This makes use of the lock file transparent.
Complete documentation of RequestSet::Lockfile
Use the .lock file to install gem dependencies

Now a .lock file will be used if present when installing gem
dependencies.  This is designed to ensure the same gem versions are used
across multiple installs.

I'm not sure if RubyGems' resolver architecture behaves identically to
bundler.  RubyGems doesn't presently run bundler's integration tests, so
compatibility is not known.
Add RequestSet::Lockfile#write

This allows a lock file to be written alongside the gem.deps.rb (or
other) dependency file.

This overwrites the existing file regardless of an existing file which
may be incorrect behavior.
Write lock file when installing from gem.deps.rb

This roughly matches what I think bundler behavior is.  I didn't go back
and read the tests, so I hope it is right.
Fix doc typo (s/ambigious/ambiguous)
Add #723, #725 to History