Refactor Attachment code. Combined AttachmentStatusLoader.Result and
Gmail.Attachment into GmailAttachment.

Renamed UIAttachment to Attachment, which still follows the UIProvider contract.
GmailAttachment extends Attachment, and contains Gmail provider specific data.

The DownloadListener in AttachmentStatusLoader will modify the cached
GmailAttachments directly, where previously we would create new Results to give
to the ConversationState.

Cancelling an Attachment download will cancel both cache and external db
entries.

Attachment download dialog will close only if state is SAVED or FAILED. This
prevents a NOT_SAVED state update from closing the dialog prematurely.

Simplify AttachmentRequest. Simplify AttachmentStatusLoader to a listener.

Bug: 7538447
Bug: 7538152
Change-Id: If6362473697e6735f1858619c7af83238d75469e
9 files changed