Make Downloader implement IDownloader so that we can have a second implentation

I'd like to use de.flapdoodle.embed.process to create an embedded version of TokuMX (a popular MongoDB fork). Because of the way TokuMX is hosted, I need to use a custom downloader.