Fix further issues with missing file attachments.

The previous fix for missing file attachments broke once the `f.close()`
call was moved into the `finally:` block if the file attachment was
missing, due to the fact that the initial statement failed and `f` was
not a valid variable. This change fixes this by creating two separate
`try/except` blocks.

It also sandboxes the generation of text-based file attachment comment
thumbnails, which would also break the page if the file was missing.

Reviewed at https://reviews.reviewboard.org/r/6444/
Merge branch 'release-2.0.x'