Six improvements to the testmode harness:
1. Shell passthrough tests use the resolved shell instead of
hardcoded /bin/zsh.
2. Exit code reflects test results (non-zero on any failure).
3. JSON summary line for machine-readable parsing.
4. IPC round-trip smoke (ping, version, unknown-cmd, encode/decode).
5. Extension lifecycle smoke (register + activate files, diff,
git, terminal; theme loading for all four bundled themes).
6. Test categories via CLIDE_TESTMODE dart-define (toolchain, ipc,
extensions, all). Makefile exposes TESTMODE_CATEGORY variable.
Also switches main.dart from bool.fromEnvironment to
String.fromEnvironment so category values other than "true" work.
Co-Authored-By: Claude <noreply@anthropic.com>