In-app media previews

`MediaPreviewActivity`, currently only supporting images, will be used to show attachments in-app in order to avoid the contents being exposed unencrypted.

Refactored saving attachments logic into a redone `SaveAttachmentTask` to be used in more than one place.
I don't really love this.  It's not clear to the caller that this is a blocking operation.