Adds basic support for [Required] fields.

Required fields currently must appear before any optional fields in
declaration order.
Required fields appearing in derived types not yet supported.