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 agree that the current implementation of the retry count is a limitation. Even so, this PR (21 tries) is already 20 times better than the current situation (1 try) :wink:

I'd be very happy to see this PR merged as is and the "tap to download" approach (good idea) tackled as an additional improvement in the future.