How to handle data model migrations in SwiftData, covering lightweight automatic migrations, custom versioned schemas, SchemaMigrationPlan, error handling, deduplication, and testing strategies.