Optional required handling

A collection of diffs that mostly add *some* support for optional.

This also makes the optional/required setting for fields available in swift at runtime, but required is not yet enforced. Will add some changes in the future for this.

And while I was touching normalization of field metadata, I tried to correct a few oddities like allowing multiple conflicting types or names on a field with only a warning (now this will be an error).