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.
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.
Fix the bucket path for release uploads.

This was missing the /releases/ before the URL, causing releases to end
up in the wrong place.
Release Review Board 1.7.19.
Fix so users with apostrophes won't cause 500 errors.

It's possible to get a user with an apostrophe due to active directory. This
change allows the regex to recognize these users.

Testing Done:
I created a user with an apostrophe in the name and went through the steps to
reproduce the problem (going to users page, as well as trying to assign the
apostrophe user to a review). 500 errors were no longer thrown after my
changes.

Bugs closed: 2890

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