Use packagemanifest, BIN files to download

This improves download speeds greatly, since we do not need to use
separate http requests for each file. Also removes the need for multiple
downloader threads. This downloader is implemented separately, so the
downloader threads still exist, but wont do much downloading in most
cases. Usually only hashing and downloading files whose hash failed.
Also, some branches do not have a packagemanifest, so the old method is
still needed.