Have download_file() return the downloaded file path

download_file() did not return anything.
We change that to return the full path to the downloaded file.
Add unit tests for download_file()

Since this is quite a big piece, we test it as a full TestCase.
We use setUpClass to download the files and point to the expected files
(so this is done only once).
We use temporary directories, through tempdir.mkdtmp(), to store the files
(two as we are downloading two files under the same name)

There are three tests run:
- Whether the method actually downloaded anything
  (checking whether the paths returned, as implemented in d12a565, exist)
- Whether the method downloaded it to the expected place
- Whether the files are the expected one
  (by comparing their contents to the example ones)