Support two-factor authentication for GitHub.

This adds support for two-factor authentication when linking an account
for a GitHub repository. Two-factor auth is much safer, and is something
to be encouraged, but was not previously usable with Review Board.

We only ever authenticate when linking an account for the first time, in
order to get an OAuth token. The repository form now has support for
HostingServices to raise a TwoFactorAuthCodeRequiredError, which
indicates the service needs an authorization code to continue.

The repository form responds to that by displaying a field where the
user can enter their auth code. The HostingService will be passed this
code and can include it in the authorization request.

There are no other points where a two-factor auth token is needed for
GitHub, since requests using OAuth tokens do not need two-factor auth
tokens.
Merge branch 'release-1.7.x'
Fix the unit tests for API caching.

The recent fix for ETags in Djblets broke the unit tests, which weren't
providing the headers Django sets nowadays. This updates our common test
function for caching to use the correct header.
Merge branch 'release-1.7.x'
In the github get_change() implementation, skip files without a patch.

We just got an error from reviews.reviewboard.org where a file in the tree
didn't have an associated patch. In this case, we want to just skip it rather
than returning a 500.

Reviewed at https://reviews.reviewboard.org/r/5020/