Add IPFS-first replication: CAR-over-libp2p protocol, self-replication on login, peer-first sync
Introduces /p2pds/repo-sync/1.0.0 libp2p protocol for peer-to-peer repo
transfer without centralized PDS servers. syncDid() now tries libp2p first
when peer info is available, falling back to HTTP PDS on failure.
- New libp2p-sync.ts: protocol handler (server) + fetchRepoFromPeer (client)
- Self-replication: OAuth login triggers addDid(own DID) to seed blockstore
- IpfsService: add dial() method for direct peer connections
- sync.ts: extract generateCarForDid() reusable by both HTTP and libp2p handlers
- start.ts: register repo sync protocol after IPFS + replication init
- admin.ts: rename "Replicated DIDs" → "Replicating Accounts", allow self-DID