move messaging into fetcher orchestration code
fix the bug that downloads every spec

basically, the bug happened anytime an API fetcher encountered an error
and fell back on the not-API. then the rubygems source would continue
to think that it should query every spec for dependencies, which would
trigger every spec to be downloaded. we now check for sources that have
changed from use_api to !use_api so we know to abort.