Add json_field.py, with support for get/set via attribute path

For example, field_name "config|foo" refers to the "foo" property in the JSON field "config".
Deeper lookups also work, e.g. "config|foo|bar|baz".