feat(cli): require supervisor-up for writer commands (phase 2 of migration-at-startup)
Add `is_solstone_up()` and `require_solstone()` in `think/utils.py`. Each
writer/stack-dependent CLI calls `require_solstone()` after arg parsing to
exit(1) with a clear message when convey isn't reachable — preventing
races with Phase 1's supervisor-startup migrations and half-written state.
Guarded 20 argparse entry points and 13 Typer sub-apps (one callback per
app). Carve-outs (supervisor, convey, maint, service, top, health, stats,
talent, export, health/transcripts/support sub-apps) are untouched.
Bypass with SOL_SKIP_SUPERVISOR_CHECK=1. tests/conftest.py sets this for
all unit tests so the suite runs without a live stack.
Ambiguous sub-app verdicts (from prep audit):
- transcripts → SKIP (all read)
- support → SKIP (external-only, no journal/stack dependency)
- speakers → GATE (dominant writes)
- awareness → GATE (imports, log write)
- photos → GATE (entity_signals writes)
- sol → GATE (identity writes)