Defer IPFS startup until identity is established
IPFS+libp2p no longer starts unconditionally at boot. Instead, it waits
for a DID — either loaded from stored identity on restart, or established
via first OAuth login. This avoids wasting CPU connecting to peers when
there's nothing to replicate.