Refactor the download process to prepare for recovery
File recovery implemented and tested (issue #28)
Move the download process, add tests to suite