Add bidirectional replication plumbing: late-bind PdsClient, serve replicated data without RepoManager, logout disconnect
- ReplicationManager.setPdsClient() lazily creates OfferManager after OAuth login
- All 7 sync endpoints accept optional repoManager, registered unconditionally
- Repo read endpoints (describeRepo, getRecord, listRecords) serve replicated data without local repo
- listBlobs and sync.getRecord fall back to SyncStorage/ReplicatedRepoReader
- Logout with ?disconnect=true revokes offers/peer record, clears node_identity, unbinds DID
- OAuth callback wires PdsClient into ReplicationManager automatically
- Added typecheck npm script