Adds required field support

- If a field is required, add a key called 'required' set to true in the field
  declaration
- Required fields have (required) added to the label and a red border around the
  field
- All field types supported