I mentioned above that I'm not sure this was the correct approach. I like the idea of a single place to know which downloader we're using since there are a few different places we instantiate one. If worst case one downloader has a critical bug or we wanted to compare them, the intention is to come here and tweak it.

The problem is, I did this by scheme (it was initially for the file:// v. http:// repos). That's not sufficient, as we also care about if the data should be downloaded to disk or in memory. It might be enough to add that as another differentiator flag. I can revisit this if you don't have time, though any input is appreciated.