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.
Allow inlineEditor dirty field calculation to be overridden.

The current dirty field calculation in inlineEditor is fine when dealing
with textareas, which have no concept of dirty state to begin with, but
custom text fields may be smarter than that. In those cases, we want
callers to be able to compute a dirty state on their own.

Now, options.isFieldDirty can be provided to return whether or not an
editor is dirty. The default implementation compares text, as it's
always done.
Use DjangoJSONEncoder in the json_dumps template tag.

By using DjangoJSONEncoder, we can properly serialize a few extra types
that the default JSONEncoder does not handle the way that's typically
expected in a Django app, such as timestamps. This ensures that a
timestamp serialized using json_dumps will appear the same as a
timestamp serialized through a WebAPIResource.
Merge branch 'release-0.7.x'
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/
Merge branch 'release-0.7.x'