Stage 2 of the ABS-compat port. Adds the handleLogin handler issuing
JWT access + refresh tokens, a SiloCredValidator adapter that calls
silo's auth.Service directly (in-process — the plugin previously
HTTP-POSTed to /api/v1/auth/login), and an ABSSessionStore adapter
backed by the abs_sessions table from migration 139.
POST /abs/login and POST /login are mounted but not yet reachable
until Stage 7 wires the audiobook service into the main router.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>