Add web UI, ATProto OAuth/DPoP, and optional client keys.
Port OAuth (PKCE + PAR + DPoP) from gitproxy with a web client-metadata
document for hosted HTTPS callbacks, and proxy procedure writes to the
user's PDS when local writes are disabled. Ship a first-party SPA under
priv/public, serve it from the router, and treat missing X-Client-Key as
the built-in web client so the console needs no API key.