Use `column_defaults` in dirty for checking changed defaults

We no longer need to "init changed attributes" from the initializer,
either, as there is no longer a case where a given value would differ
from the default, but would not already be marked as changed.
Merge pull request #15775 from sgrif/sg-use-column-defaults-in-dirty

Use `column_defaults` in dirty for checking changed defaults