schema_test: verify migrate_ai_gateway_settings() populates
gateway_embed_key from OPENROUTER_API_KEY env var.
service_test: verify effective_config() falls back to
gateway_vision_key when gateway_embed_key is empty.
Add migration in migrate_ai_gateway_settings() to copy OPENROUTER_API_KEY
into gateway_embed_key site setting when empty, matching the existing
pattern for gateway_vision_key. The effective_config() fallback chain
already cascades gateway_embed_key -> gateway_vision_key ->
OPENROUTER_API_KEY, but without the migration the DB setting stays
empty string on every boot, so the fallback only works when the vision
key itself was also never migrated (unlikely after the first boot).