Handle unicode/str cast operators.

A few of our objects defined __str__ and/or __unicode__ methods. This presents
some complications for porting to python 3, since str has different meanings.

Django provides a decorator, @python_2_unicode_compatible, whereby you define
__str__ using python 3 semantics (i.e. it returns unicode), and when running
with python 2, it will rename that to __unicode__ and make __str__ call that
and encode to utf-8.

Testing done:
* Ran unit tests
* Checked list displays in the admin

Reviewed at https://reviews.reviewboard.org/r/4920/
Convert metaclasses using @six.add_metaclass()

Metaclasses work differently in Python 2 and 3. Newer versions of six include a
decorator that can apply them for both versions. This change converts the
reviewboard codebase to use that.

Testing done: Ran unit tests.

Reviewed at https://reviews.reviewboard.org/r/4923/
Simplify logout view.

Instead of using django.contrib.auth.views.logout with a next_page of our login
URL, use django.contrib.auth.views.logout_then_login, which does the same
thing. Additionally, move the URLspec from reviewboard/urls.py to
reviewboard/accounts/urls.py.

Testing done:
* Ran unit tests
* Logged out of my devserver and saw that I was sucessfully redirected to the
  login page.

Reviewed at https://reviews.reviewboard.org/r/4930/
Switch over to django.contrib.auth.views.login

Once upon a time, django.contrib.auth didn't have a built-in login view. As of
about half a decade ago, it does. This means we can kill the one in djblets,
which isn't nearly as well maintained.

This change switches us over to the new view and form, which works pretty
similarly to the old one. The major differences are in the naming of the error
fields, 'next' vs. 'next_page' (which I'll deal with once I stop using
djblets.auth.util.login_required), and CSRF protection.

Testing done:
* Tried to login with an invalid username and password and saw the right error.
* Tried to login after fiddling with the CSRF token and saw a 403.
* Logged in with a valid username and password and was redirected to
  /dashboard/
* Checked that when I accessed a page when logged out I was redirected to log
  in, and then once I logged in, I was redirected back to that page.

Reviewed at https://reviews.reviewboard.org/r/4931/
Switch to django's built-in login_required decorator.

There's no longer any reason for us to have our own login_required decorator,
and it's just more code for us to maintain. The upstream django one provides
everything we need (plus some nice checking that we didn't have).

This is a little bit ugly because of the name of the 'next_page' field on the
login page, but that will be a trivial cleanup once this goes in.

Testing done:
Checked that all the views which explicitly used login_required and a few of
the views that used check_login_required correctly redirected to the login page
with next_page set properly. Once there, checked that logging in redirected to
the correct page.

Reviewed at https://reviews.reviewboard.org/r/4932/
Fix next/next_page mess.

For representing the page to redirect to, the djblets auth code used
'next_page', while django's auth used 'next'. Now that the login view and
decorators are entirely converted to use django's, we can convert these to use
'next'.

There's still one instance of 'next_page' used in the registration page. I
haven't yet looked to see how much of that page can be replaced with code
from django.contrib.auth.

Testing done:
Verified that all the changed locations redirected to the login form with the
correct variable names set, and that logging in redirected to that page.

Reviewed at https://reviews.reviewboard.org/r/4933/
Turn off the General Index for release notes.

General Index is pretty useless for release notes, so get rid of it.
It just contained random links to random release notes.