db+web: jobs table — one Discord account → N atproto identities
Inserts a jobs(user_id, did, did_handle, did_avatar) table between users
and rules. rules.user_id and write_counters.user_id move to job_id so a
single Discord account can drive multiple atproto identities, each with
its own rule set and counter ledger.
Includes a one-shot in-place migration (table-rebuild dance with
foreign_key_check) that seeds jobs from users with a DID, rewires rules
and counters, drops rows belonging to orphan no-DID users, and removes
did* columns from users.
Web UI gets an identity switcher (active pill + per-job sign-out / switch
/ delete / re-auth, plus "link another"). Bot, backfill, active-guilds,
and CLI scripts are switched over to job_id. Smoke test under
scripts/test-jobs-migration.mjs exercises the migration end-to-end.