Fields must positively validate null values if requried is false

When any of the field has the `required` keyword set to False they should be able to validate null values
I think I've fixed this with less changes over there, isolating the logic to the type-checks. Note that there are still tests showing that required fields cannot pass with missing values.