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 because it's not used and shadows built-in `type`. Pylint reported the latter, while I personally find shadowing builtins a bad practice. Also, `disable=unused-argument` was already there, but had no effect because semicolon was missing, so I just fixed it, not added.

One more thing - despite `type` not being used, I decided not to remove it in order to keep function signature intact. Changing it could result in ripple effect and original author must have good reasons for doing so.