feat: #3584485 introduce visit event for extensible analytics

Add ShortUrlVisitEvent dispatched by both the middleware and VisitTracker service. VisitDatabaseSubscriber writes to DB.

Middleware now collects all X-Shorturl-* headers generically and strips them all before sending to client. No hardcoded header names — any module can add fields via hook_redirect_response_alter.

Removes database dependency from middleware (DB writes moved to event subscriber).

Closes #3584485

Merge request reports

Loading