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.