add DepSpecs class for specs from new index
use DepSpecs in fetcher
add DepFetcher with hardcoded path to dep files
download new index files from the server \o/
reorder methods for usage clarity
handle versions with no dependencies
add missing space in error message
add net-http-pipeline
handle multiple requirement strings
allow zero-spec responses

the source legitimately might not have information about the gem being requested,
so zero specs is not an error case. returns nil instead if there was an error.
repeatedly fetch until all specs are found
always try the API, don't re-fetch unmet deps

this adds much more aggressive attempts to use the dependency API (with the
assumption that the server will deny requests that are too large), and also
stops telling sources to fetch dependencies that were already not there.