Update to use Djblets's new extension imports.

This updates the imports to pull from the new locations in the
djblets.extensions module. It leaves the Review Board extension modules
as they were.
Update to the latest version of django-pipeline.

Now that django-pipeline has an explicit setting for enabling/disabling
media pipelining, and now that we're using Django 1.5, we can make use
of it again. This upgrades us to the latest release of pipeline.
Fix switching to Custom repositories and missing hosting services.

When switching the hosting service of a repository from a service to
Custom, the repository would stay on the hosting service. This was due
to a repository still being associated with a HostingServiceAccount. We
now set that to None when switching.

There was also an issue loading the administration page for repositories
when a hosting service was missing (due to an extension not being
enabled). If a repository had a hosting service account, it was assumed
that it could load that account, and that would fail, breaking the
listing of repositories. We're now a little more careful in this
particular code path.
Merge branch 'release-1.7.x'
Fix review-requests/ resource to catch diff related errors.

There were several diff parser related exceptions that weren't being handled in
the review requests resource, which would cause a 500. This change catches
those errors and translates them into equivalent API errors.

Testing done: Ran unit tests.
Reviewed at https://reviews.reviewboard.org/r/4754/
Centralize much of the comment API update/create code.

Most of the comment create/update code was duplicated, and some fixes
were missing from places. That code has now been centralized, making it
easier to maintain and to update.
Support the new static bundles for extensions.

This updates to support the new static bundles for extensions. The
appropriate template tags have been placed in the base template, so that
the default bundles will be loaded.

There's also a new reviewboard.extensions.packaging module, which
contains a setup function that an extension's setup.py can use in place
of the standard setuptools one. This will set some required options for
the package, and set things up to install static bundles.

The documentation and extension generator have been updated.
Support static media bundles in review UIs.

ReviewUI now has css_bundle_names and js_bundle_names variables, which
specify static media bundles that will be loaded in when displaying the
review UI. This makes it easier to write a Review UI without having to
use a custom template to include the required files.

Extensions can use Extension.get_bundle_id to pass in bundle IDs for a
review UI, but it must do it in the ReviewUI's __init__ function, or
patch the class in the Extension's __init__, as the extension IDs (and
therefore bundle IDs) are computed once an extension is enabled and
constructed, not when defining the classes.
Fix a typo in the extension docs.

In the docs dealing with extension configuration pages, one of the citations
said "admin_url.py" where it should have said "admin_urls.py". Trivial fix.
Fix the fill-database command.

Changes in the diff code as well as django-1.5 caused fill-database to break.
This change fixes it, switching to use the UploadDiffForm from the reviews
module, and calling is_valid() to make sure that the form cleans the input
data.

Testing done:
Ran the command and saw that it actually ran and populated the database
correctly. Ran the unit tests, they all pass.

Reviewed at https://reviews.reviewboard.org/r/4692/
Add a sample GitHub token setting to settings_local.py.tmpl.

This adds commented out, documented GITHUB_CLIENT_ID and
GITHUB_CLIENT_SECRET settings to the settings_local.py.tmpl, which is
generated when doing a prepare-dev.py.

Reviewed at https://reviews.reviewboard.org/r/4665/
Fix revision label strings to be consistent.

The latest revision and older revision strings weren't consistent in their
capitalization of the phrase "Diff Revision", which I didn't notice until I was
making screenshots for documentation. Trivial fix.
Add docs uploaded directory to .gitignore
Pass through template name for the configure_extension view.

djblets' configure_extension allows specifying a custom template, but review
board's didn't. This meant that if an extension wanted something special on its
settings page, it would have to re-implement the code from
reviewboard.extensions.views.
Merge branch 'release-1.7.x'
Hopefully fix "Could not parse the remainder: ',' from 'uid,'" errors

It looks like this was caused by some backwards-incompatible changes to the url
tag in django, and we never updated this particular part. Others had the exact
same problem with their password_reset email templates, so I don't feel too
bad. Trivial change.
Make crypto_utils backwards compatible with python-crypto on CentOS 6.4

CentOS ships an older version of pycrypto by default, with the newer version
only available in EPEL. This change makes Review Board work with either.

Testing done: Was able to get ReviewBoard to work on CentOS 6.4

Reviewed at https://reviews.reviewboard.org/r/4769/
Fixes bug 3110
Disable JavaScript extensions when running unit tests.

Extensions can interfere with the unit test suite, so make sure they're
not initialized on the js-tests page.

Note that a TemplateHook can still pose a problem, but that's a problem
for another day.
Expand upon some of the API resource descriptions.

The descriptions for some of our main API resources were pretty thin.
This expands upon them just a bit. Largely, it's in preparation for
further edits to these particular descriptions that are coming in
another change.
Document extension metadata field.

This simple change adds a paragraph on how and why one would want to add the
``metadata`` attribute to their extension class.

Testing done: Generated HTML docs.
Reviewed at https://reviews.reviewboard.org/r/4794/