reorder methods for usage clarity
handle versions with no dependencies
add missing space in error message
try deps index before falling back
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.