Bump AJAX_SERIAL when bumping the Extension sync generation.

Extensions often affect many aspects of page rendering. Pages that make
use of AJAX_SERIAL in their cache keys expect that a change to a
template will cause a change to the cache key. It therefore makes sense
to bump AJAX_SERIAL when we bump the extension sync generation (which
happens when enabling/disabling an extension or changing extension
configuration).

With this change, any pages that properly use AJAX_SERIAL will
invalidate their cache any time an extension makes a change that may,
for example, toggle a feature on or off.
Release Djblets 0.7.22.
Allow JSONFields to be modified through the admin UI.

At times, people would try to set new content in a JSONField in the
admin UI, since the field is editable. This resulted in a broken
encoded string that had to be literal_eval'd. It was also pretty easy to
accidentally lose the payload by introducing JSON syntax errors without
any warning.

Now a JSONField will store the string as-is if one is passed, instead of
assuming it's structured data it needs to be encoded and stored. To
ensure the data it's trying to set is valid, it also runs a validator
that guarantees input going in is valid JSON. Invalid JSON will result
in a validation error in the form.
Fix URL errors when configuring extensions in the presence of SITE_ROOT

The extension framework used str.lstrip() to try to strip off the SITE_ROOT
from the admin URL root, but the problem with that is that lstrip takes in a
set of characters, not a string. If that set of characters included "a" and "d"
(for example, if SITE_ROOT is "/reviewboard/"), it would remove those
characters from the beginning of "admin/...".

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