DownloaderService fixes
This aims to simplify the DownloaderService
a bunch to make it easier to understand. It also fixes some bugs with the download queue and related progress reports.
This is groundwork for the upcoming InstallManagerService
which will manage the whole process of installing an app, from checking the cache, to downloading, to running the install process.