add PushDownloaderJob

This fixes #1264 

If a pending attachment download is interrupted, it will be resumed as soon as the network connection is established again. The job is persistent, so the download will be resumed after an app restart as well.

Until now `JobManager.setEncryptionKeys()` was never called, so encrypted jobs were never loaded to the JobQueue from the database. I put the call to `setEncryptionKeys()` in `RoutingActivity.onNewMasterSecret()`, I'm not sure if this is the best place for it?
I think something like WhatsApp does is great: If the image failed to download, instead display a gray square with the text 'tap to download'? But I agree, this is probably something for another PR.