atproto-oauth: add discovery-chain sublibrary
New sublibrary atproto-oauth.discovery (module
Atproto_oauth_discovery) composes the full handle-to-AS-metadata
chain:
handle
-> DID (via Atproto_handle_resolve.via_https)
-> DID document (via Did_resolve.resolve)
-> PDS URL (via #atproto_pds service, with type-fallback)
-> Resource metadata (via Oauth.Discovery.fetch_resource)
-> Authorization server URL (first entry)
-> Server metadata (via Oauth.Discovery.fetch_server)
-> validated against Atproto_oauth.Profile
Error type unions the six failure classes along the chain so callers
pattern-match once. Pds_of_document is exposed for callers that cache
the DID document or inject an alternate resolver.
6 tests covering PDS extraction paths, pp_error across every variant,
and pp for the result record. End-to-end HTTP testing lands with the
interop trace.