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.
Yeah definitely, this probably belongs more in the MediaMmsMessageRecord object anyway