Improve diff pagination a little bit.

This doesn't change pagination in a wild way, it just fixes it to not be super
weird. During the diff index changes, the pagination links at the top of the
diffs disappeared, leaving it so the only one was at the bottom. This was a
rude surprise when I slogged through a big review only to discover that there
were two or three more pages! I've restored the pagination links at the top,
which means there's one set of links after the diff index and one at the very
bottom of the page.

I also changed it so switching pages will operate without a reload. This makes
it very smooth to navigate around.

Testing done:
Switched around to a bunch of different revisions and interdiff revisions with
multiple pages. Made sure that switching pages always went to the right place,
and that switching to new revisions always loaded the first page of the
new revision.

Reviewed at https://reviews.reviewboard.org/r/4856/
Update the draft filediff test suite to use the new mixins.

The draft filediff support was written before all the new test mixins,
but committed after merging those mixins. It was never updated to use
them. This change fixes that.
Add API for fetching and setting diff file attachments.

There's now a /api/repositories/<id>/diff-file-attachments/ resource
that contains the known, registered diff file attachments tied to a
repository. Nothing on this tree can be modified, only retrieved.

In the future, some file attachments will be automatically associated.
Those that cannot can be modified by issuing a PUT on a draft filediff
resource and passing a file for the file attachment representing the
destination/modified file. Right now, this is allowed for all filediffs
for binary files, but later it will be restricted.