perf(content): watch navigations instead of every DOM mutation master
The content script runs on every page the user visits and observed the whole document with childList+subtree only to notice SPA URL changes. Measured on bsky.app (headless Chrome 149, ~20s of scrolling plus one in-app link click) that callback ran 66 times over 448 mutation records to catch a single URL change; on youtube.com, 39 times over 462 records. The Navigation API reports each navigation directly, so the same detection costs one listener. It is feature-detected and browsers without it keep the old observer, so the manifest's Chrome floor is unchanged. Reports are now deduped on url+hints, which drops the extra one Chrome causes by firing navigatesuccess for the initial page load, and lets a re-read 400ms later catch routers that swap the head tags after the URL changes.