Move all OAuth token handling from JS to WASM, add granular scopes
Auth flows (startLogin, completeLogin, loginWithAppPassword) now run
entirely in WASM — tokens, DPoP keys, and session construction never
enter JS memory. Replaces transition:generic with per-collection
repo:app.opake.* scopes built from a single registry (crate::scope).
Security fixes from adversarial review: DpopKeyPair now zeroizes on
drop, tokenExpiresAt() replaces session() leak, proactiveRefresh()
replaces side-effect hack, PendingLogin gets TTL + auto-clear.