fix: use string defaults so schemas can include them, but validate them
When a pydantic field is a class, its default should still be a string
so it can be included in the schemas, but we should request it be
validated with `validate_default=True` so it gets converted correctly by
the before validator.