Add platform to lockfile

I think this is right, it seems to be RUBY unless there's a gem with a
platform.
Extract add_PATH from Lockfile#to_s
Extract add_GEM from Lockfile#to_s
Extract add_PLATFORMS from Lockfile#to_s
Extract #add_DEPENDENCIES from Lockfile#to_s
Store @set.sorted_requests as an instance variable
Add newlines to lockfile output consistently

During the refactor some were added in to_s, others were added in add_*.
Now they're all added in the add_* methods.
Save spec_groups as an instance variable

So it doesn't need to be passed as an argument.
Add Requirement#for_lockfile

This reduces duplicate code in Lockfile.
Add whitespace between sections
Shorten directories for path: gems in Lockfile

Bundler's lockfile uses relative paths for these, so now we do too.
Fix Lockfile#to_s test names
Add tokenizer for gem dependency lock files

This is not be a complete tokenizer, but it covers the basics.
Drop use of Enumerator

An Enumerator doesn't have an unget equivalent, so just use an Arary.
Implement basic lockfile DEPENDENCIES parsing

This does not handle requirements or that ! thing.
Parse PLATFORMS from a gem dependencies lockfile
Capitalize parse_dependencies to match section name
Allow access to the sets used for resolution

This will allow modification of sets used through the Lockfile.
Improve DependencyResolver::compose_sets behavior

Now ::compose_sets raises an exception for zero non-nil sets, returns
the only set given for one set and composes for more than one set.
Use improved ::compose_sets in RequestSet#resolve