Next.js: expire dev HTML handoff entries whose client never connects
Four dev-server registries insert one entry per HTML request and delete
it only when the matching HMR websocket later connects. Requests whose
client never connects (curl, no-JS crawlers, failed hydration) leak the
entry — a cache status, a React debug-channel stream, or a serialized
errors RSC stream — for the process lifetime (the source TODOs conceded
the missing cleanup).
Add setWithExpiry (unref'd TTL timer, identity-guarded delete so a
replaced value is never removed by a stale timer) and wire it into all
four registries: serialized-errors, debug-channel, and the
turbopack/webpack cache-status maps.