XBlock Fields initialization

This PR is just for code review, merging to that branch makes no sense. Also note that the edx repo "enforce_type" has changed, in a way that requires changes to merge this on top of it.

Basically, created this branch for use while developing discussion and code review.

For use case, see: aboudreault/xblock-discussion#1

I'd like some feedback before going upstream.