Refactor new field metadata for readability

At the suggestion of @knaber, @will-moore, and
@ximenesuk, I've updated the metadta model here
to be more readable/usable:

 * Each class has a signle `_field_info` namedtuple
 * each element of which is *another* namedtuple
 * with the elements `wrapper` and `nullable`.

i.e. `image._field_info.name.nullable` is `False`