Extract HostFetcher out of Fetcher

These changesets split Fetcher in two. HostFetcher is a new type that handles all the actual HTTP work for a single host.  Fetcher retains all the queue management, and the code that manages HostFetchers, spawning and retiring them as needed.