This fixes the weird/broken existing behaviour which was incorrectly
creating symlinks at download time. It also defers much more logic to
the original code.
For clarity, rename the existing `API::Download` class to
`API::SourceDownload`.
While we're here:
- add a/improve the `download_type` method on all `Downloadable`
subclasses to improve download queue output format
- move some logic to `RetryDownload`