Fix working with file attachment drafts.

File attachment drafts were a bit broken. The API would return the
non-draft version, meaning it would contain the old caption and not the
new caption. We didn't notice this before the JavaScript rewrite,
because we just showed the local caption we saved, but this is more
apparent now.

The server-side resource now specifically serializes the resulting file
attachment using itself instead of the default serializer.

The JavaScript side now has a DraftFileAttachment object that's used for
all file attachments on the review request page. This is just a thin
wrapper around FileAttachment that makes use of the draft resource.