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)
Also, best practice when logging with variables is to allow the logging module to do the interpolation.

    logging.warn("XBlock %s does not contain field %s, type(block), name)