Bullet-proof change descriptions with deleted file attachments.

Because of the ways that file attachments and change descriptions are stored,
it's possible to delete a file attachment from the database but still have its
old pk referenced from the change description. In this case, trying to render
that change description would crash because it no longer exists.

This change adds some bullet-proofing to ensure that we don't show a traceback.

Testing done:
Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/6563/
Fix problems when adding invalid users to target_people via the API.

When doing a PUT on the ReviewRequestDraftResource, if find_user() returned
None, that would be added to the relation, generating a database error and
aborting the transaction. In production this worked OK but it didn't from the
API unit tests.

Now, after find_user() is called the return value is tested; if None then it
throws an ObjectDoesNotExist exception and skips getting added to the database.
In update() it checks for invalid_fields, which will contain target_people if
no user was found and returns a webAPI error of INVALID_FORM_DATA. So the HTTP
response gives an informative error, and None never gets added to the database.

Testing Done:
The unit test asserts that find_user() returns null, then checks that
find_user() is called, checks the response code for 105 (INVALID_FORM_DATA),
and that there is no TransactionManagmentError thrown by the database.

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