feat: add handle registration screen and IPC for MM-148
Adds the final onboarding step: handle registration and HTTP resolution
polling. After the Shamir backup step, the app calls POST /v1/handles to
register the handle, then polls resolveHandle until the DID is resolvable
via HTTP (2-minute timeout; proceeds anyway if it times out).
- Rust: register_handle IPC command (fetches domain from describeServer,
reads DID + session token from Keychain, POSTs to /v1/handles)
- Rust: check_handle_resolution IPC command (polls resolveHandle endpoint,
never rejects — safe for setInterval polling)
- TypeScript: registerHandle() and checkHandleResolution() wrappers in ipc.ts
- Svelte: HandleRegistrationScreen with registering → polling → success/timeout
phase machine; 4s poll interval, 2-minute timeout
- State machine: handle_registration step inserted between shamir_backup and complete