Accept custom downloader factory in the Remote.get_downloader() method
If the only change for the download functionality is happening as a part of a downloader factory,
Remote.get_downloader code would be copy-pasted only for the sake of using a different downloader factory.
Add an optional parameter
downloader_factory to the
Remote.get_downloader. It should default to download factory configured on a remote to preserve the current behaviour.