Enforce type of the Fields when set

Add a enforce_type method and call it on __set__ to make sure that
the stored value type is consistent.

enforce_type is aliased to from_json for the most basic types