Switch Downloader to use NSMapTable so we can avoid dispatch_barrier calls

Using a weakToStrong NSMapTable removes the need for dispatch_barrier. This fixes #803 (and possibly some other performance issues on older devices).