Tweak the account forms a bit.

The forms on "My Account" had a few issues. The first one I noticed was that
the label for "Keep this information private" ended with a colon, despite the
check-box being on the left side of the label. This was because we were using
django's label_tag method, which is kind of dumb and expects the form field to
always be on the right-hand side of the label. I've switched us over to using
djblets' label_tag tag, which does the right thing for check-boxes. As a nice
side-effect, we automatically get better styling for required field labels.

The other thing I noticed was some issues with alignment and sizing. The labels
were all indented 0.5em from the left-hand side of the boxes that they labeled,
which looked ugly. The e-mail field also had a different font size than the
other fields.

Testing done:
Looked at the various forms in "My Account" and saw that they all looked nice.

Reviewed at https://reviews.reviewboard.org/r/5526/
Show the username instead of first name in the top navbar.

This mirrors the usability change we made for RBCommons a little while
ago. People know their first name, but sometimes forget the assigned
username. Instead of showing the first name in the top navbar next to
the gravatar, we now show the username instead. This particularly helps
if a first name is not set.
Move column initializers into __init__ calls.

Several of the columns directly assigned member variables that ought to have
been included in __init__ instead. While this was perhaps slightly more
readable, it meant that the Column.__init__ method couldn't operate on them.

This change moves all those parameters into the __init__ calls. It also splits
the "To Me" column into using detailed_label_html and detailed_label, to
dovetail with my djblets change that fixes the sort order in the column
selector.

Testing done:
Looked at the column selector and saw that everything was in alphabetical
order, even when the column included HTML or other entities at the beginning of
the text.

Fixes bug 3260.

Reviewed at https://reviews.reviewboard.org/r/5538/
Make a bunch of updates to the user manual.

This change updates a lot of the text in our docs to match the 2.0 reality
better. This doesn't yet update any of the images--I'll go through and take a
bunch of new screenshots in a later change. There are also some larger changes
that I'd like to make to the content, which I'll be filing issues about to
track.

This includes one small change to a label on the profile page for accounts,
since when I was writing the docs, I realized that some installs may hide the
fields that are referenced by "Keep this information private".

Testing done: Built HTML docs and read through them.

Reviewed at https://reviews.reviewboard.org/r/5527/
Add registration and extension support for custom auth backends.

The auth backend code now follows the same registration pattern used
throughout the codebase. Auth backends can be registered, unregistered,
iterated through, and looked up.

A new requirement is that auth backends must have an ID. For
compatibility purposes, we assign an ID if one is not set when scanning
entry points, but all registrations going straight through the new
functions will require an ID set directly on the class.

There's also a new AuthBackendHook for extensions, which will handle the
registration and unregistration for the extension.

Documentation has been added for the new hooks, and the guide on writing
an auth backend has been updated as well.
Fix password_reset_confirm URL for django change.

Django changed the uid parameter to the password_reset_confirm view to be
base64-encoded instead of base36. This means our URL had to change a bit.
Trivial change.
Merge branch 'release-2.0.x'