Support for json-encoded strings for Dict field

This patch allows setting a json-encoded `dict` to Dict fields, e.g. via data attributes in workbench scenarios.

* Motivation: Dict field only allows setting `dict` instances or None. This makes integration and manual testing with workbench problematic, as fields of this type can't be set using XML format.
* Affected components: all XBlocks using `Dict` fields, backward compatible with existing setups.
* Affected users: all
* Testing guidelines: run unittests
* Partner information: 3rd party-hosted open edX instance, for an edX solutions client (so will need to get some sort of solution merged in)
* Merge deadline: Oct 21 (soft requirement to minimize code drift, we maintain it on the client fork in the meantime)
@cpennington there are some curly brackets in xml snippet, so when using `format` python honestly tries to find a named parameter for them and obviously fails. Of course it's possible to escape them, but using `%` yields a cleaner template.