Adjusted the validation step once more to skip converting a field when the value
is `None`.  The validate function is still called to ensure further validation checks
take place.

This commit also makes `required=True` a required flag if a value of None is not
allowed.

For example, this code used to produce an error if x was None.  But it's not required.

    class Foo(Model):
        x = ListType(StringType(), min_size=1)

To properly throw an error now, use code like this:

    class Foo(Model):
        x = ListType(StringType(), min_size=1, required=True)