Replace three separate per-hostname databases (nostr-nip05-cache-*,
nostr-profile-cache-*, nostr-dm-store-*) with one shared 'ditto'
database containing three object stores: nip05, profiles, messages.
A single db.ts module manages the connection and upgrade logic, and
caches the promise so only one connection is created per page lifetime.