Add the students to the AUTHORS file.

The upcoming beta has contributions from a number of our students, so we
want to add them to the list of contributors.
Fix the unit tests for the user page.

The user page datagrid tests had some left-over checks that I forgot to
remove. Instead of just removing them, though, I've rewritten them in
order to properly test the new sidebar.
Set better defaults for the dashboard columns.

The default set of columns for the dashboard were made a long time ago,
and we've had many useful columns added since. This sets some of the
better ones as defaults. The new set is:

* Selection checkbox
* New updates flag
* Ship It/Open Issues
* My Comments
* Summary
* Submitter
* Repository
* Last Updated (Relative)
Make the formatting for the diff label consistent with other labels.

This updates the "Diff Revision ..." label's style to look like the
Description, Testing Done, etc. labels. It's also now lined up with
where the Issues label would be.
Filter out indentation changes in unrelated areas in interdiffs.

Our new interdiff logic tried hard to hide changes to files that weren't
part of the provided diff, but the new indentation markup code showed
those changes anyway.

Now instead of the interdiff code turning things into "equal" chunks, it
turns them into "filtered-equal" chunks instead. Those are then
converted back into "equal" chunks in a post-processing step, after the
indentation code has run. This prevents that code from operating on any
chunks we don't want to display changes for.
Add an extensible API-level concept of "approval" to review requests.

Review request resources now have an `approved` boolean field that
indicates if the review request has met sufficient approval to pass
review and become part of the codebase. This is not exposed in the
Review Board UI, but extensions and consumers of the API can make use of
it for such things as preventing check-ins.

By default, this considers a review request to be approved if there's at
least one Ship It! and no open issues.

A new hook, ReviewRequestApprovalHook, can be used to alter the approval
logic by augmenting or replacing the existing approval code. This can be
used to easily require, for example, a minimum number of Ship It!'s, or
review by a member of a certain core group, or to provide different
logic depending on the department or repository.

Down the road, we can use this for the new pre-commit hooks, and we can
provide an extension utilizing this to make it easy to add some of the
more common types of approval logic people want.
Fix interdiffs for small files or changes near the top of the file.

The interdiff filtering code made some assumptions about the number of
lines of context around changes in a diff chunk. This was believed to be
mostly valid for a typical diff, but that was a bad assumption.

Any changes near the top of the file (specifically, within those 3
assumed lines of context) would be filtered out. If the file was fewer
than 3 lines, it would flat-out break, due to an assumption of a length
indicator in the chunk header that was missing. Even fixing that, since
the file's total number of lines fell within the 3 lines of assumed
context, the whole file would appear unchanged.

Instead of assuming things, we now do a little more processing on the
diff. We go through each line and look for the chunk headers, as we did
before (previously using finditer). When we find one, we begin looking
at the following lines for any line change indicator, and we count how
many lines are unchanged. We can then use that to more accurately
determine the context of the chunk.
Add missing documentation for SignalHook.

This adds some missing documentation covering SignalHook.
Fix PyFlakes warnings in Review Board.

We had a number of PyFlakes warnings from recent changes that weren't
addressed. This cleans them all up, getting back to 0 warnings or
errors.
Show the full commit ID in a tooltip for the Commit field.

The Commit field shortens the commit ID if it's too long. It's still
useful to be able to see the full ID, though. Now, hovering over the
shortened ID will show a tooltip containing the full ID.
Split up the extension docs.

The extension documentation was getting a bit too large, making it hard
to find specific content. This splits the docs into a number of new
pages:

* Overview
* File Layout
* Extension Class
* Extension Configuration
* Database Models
* Extension Hooks
* Static Files
* Review UI Integration
* Extending the Web API
* Extension Distribution

Otherwise, the content is largely unchanged, with the exception of some
cross-links and converting implicit code blocks to using
`..  code-block::`.
Modernize the Review UI extension documentation.

Much of the Review UI documentation was old, based on what we had when
we wrote 1.7.

This updates it to make use of the static bundles and JavaScript
classes. It's now shown to be a lot simpler to build.

It still leaves out much of the Review UI functionality, like custom
templates or diffing, but it's at least less misleading.
Fix for an IntegrityError when trying to load the dashboard

When trying to load the dashboard using the datagrids module, the profile was
not passed as a parameter to the site_profile property.

Testing Done:
Tried to open the dashboard in the logged in as well as the logged out state to
check if the error appears again. Also registered as a new user and saw whether
the issue occurs.

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