Fix defaults overriding stored data on update

Calling `validate` on a Model passing partial data would cause fields that were
already set but had default values to drop set data and adopt the default values.

See included test for an example.