Switch the Mercurial support to use the command line tool.

Our Mercurial support interfaced with the 'hg' module to cat files in a
repository, but this can easily be accomplished by the command line
tool. That tool is the correct API to use, not the module. More
importantly, it resolves a licensing issue due to the 'hg' module being
GPL, which was a terrible oversight that we want to address. This will
be backported to prior releases.
Switch over to using a real hg repo instead of a bundle.

The 'hg' command-line tool doesn't entirely work when treating a .bundle file
as if it were a repo. This change extracts the bundle into a new hg repo
directory, and changes our test suite over to use it.

Testing done: Ran unit tests.
Merge branch 'release-1.6.x' into release-1.7.x
Merge branch 'release-1.7.x'
Release Review Board 1.6.22.
Fix the destination S3 bucket address for releases.
Add the missing release notes.
Merge branch 'release-1.6.x' into release-1.7.x
Release Review Board 1.7.20.
Merge branch 'release-1.7.x'
Add the release notes to the Table of Contents.
Merge branch 'release-1.7.x'
Fix generating the manual with the recent Djblets change.

Djblets now accepts callables for headers on WebAPIErrors. This updates
the webapi docs builder to support this.
Merge branch 'release-1.7.x'
Update locale files.

Simply running makemessages -a for django and djangojs domains. This doesn't
contain any new translations, just picking up new strings.
Fix some i18n issues and use djblets localization.

This change makes a bunch of small improvements to localization in Beview
Board:
* Switch from ugettext to ugettext_lazy in places where _() is called in a
  "static" way.
* Add 'djblets' to INSTALLED_APPS, so that djblets/locale will be added to the
  locale paths.
* Add 'djblets' to the list of packages which are included in the jsi18n view.
* Switch admin/checks.py to use 'ugettext' instead of 'gettext', since the
  latter just crashes if it sees unicode.

Testing done:
Checked that the djblets i18n worked properly for both backend python/template
strings, as well as front-end javascript strings.

Reviewed at https://reviews.reviewboard.org/r/5091/
Fix the activity widget in the admin to include data from 'today'

The actvity graph in the admin site used 'today' as the end point, which means
that any data actually generated after midnight were not included. This patch
changes the date range to end on today+1.

Testing Done:
Tested on internal production environment.

Reviewed at https://reviews.reviewboard.org/r/5083/
Fix the activity widget in the admin to include data from 'today'

The actvity graph in the admin site used 'today' as the end point, which means
that any data actually generated after midnight were not included. This patch
changes the date range to end on today+1.

Testing Done:
Tested on internal production environment.

Reviewed at https://reviews.reviewboard.org/r/5083/
Make admin activity widget date range parsing a little bit more robust.

It was possible to cause the activity widget in the admin to generate requests
to the server that would generate a 500 response. The issue here was that we
didn't properly sanitize dates unless both the start and end range were
provided.

I've changed it to convert the request parameters to datetimes individually
instead of if they're both necessary, and changed the if/elif/etc block to
verify that the necessary data was provided in request.GET before trying to use
it.

Testing done:
Checked out the admin UI a bit.

Fixes bug 3068.

Reviewed at https://reviews.reviewboard.org/r/5101/
Merge branch 'release-1.7.x'