Treat `logfire.tags` passed through structlog as log tags
Follow-up to #2550 (see #524), which fixed this for stdlib logging and loguru.
Today LogfireProcessor copies every non-reserved key of the structlog event dict into the attributes. So logger.info('x', **{'logfire.tags': ['a']}) or logger.bind(**{'logfire.tags': [...]}) exports logfire.tags as the JSON string '["a"]', adds it to logfire.json_schema, and loses it completely when the processor's logfire_instance has tags of its own.
This change pops logfire.tags from the attributes and passes it to Logfire.log(tags=...), treating a single string as one tag, the same way #2550 does for the logging handler. The tags are merged with the instance's tags, and events without the key are unchanged.
The new tests in tests/test_structlog.py cover kwargs, bind, a single string and with_tags; they fail on main and pass with the change, and ruff and pyright are clean.