streaming media (internally)

Rebased and slightly modified version of moxie's media-branch version. This one keeps the PartProvider around to supply encrypted previews for audio/video, and we can remove it once we support previewing all media in-app.

Except in the case of building the MMS body, we no longer hold entire media parts in memory with this change. This is the first step toward supporting large attachments.