xblock fields persist w/o breaking by scope

Letting xblocks handle scope rather than separating fields into
different attrs. Although, split still shunts content fields to a
different collection than setting and children fields.

The big difference is that content fields will always be a dict and not
sometimes just a string and there's no special casing of 'data' attr.

The other mind change is no more 'metadata' dict.
Clarify function name

and fix some comments ref'g old names
Clarify comments re behavior
Move load_from_json to the test file only

It's a reasonable demo of in memory xblock creation, but doesn't fit
the xblock pattern. Moving temporarily to keep the dag persistence test.
Add field iterator which includes namespaced fields

And fix get_explicitly_set to use it and to get the json not native
field values.
Better explain behavior and todo's
Remove obsolete attrs.
pass xblock fields as top-level keywords on factories
Merge pull request #624 from edx/dhm/flatten_kvs

xblock fields persist w/o breaking by scope