test(terminal): pure-function tests for icon detector + map + source attribution
Adds 32 tests covering the side-effect-free layers of the auto-tab-
icon stack so further mapping additions / heuristic tweaks can't
silently regress:
- `CommandIconMapTests`: exact / case-insensitive lookup, first-token
extraction with args, alias coverage (npx→Npm, lazygit→Git, …),
unknown returns nil, debug-catalog ordering and must-have tokens.
- `TabIconSourceTests`: `storageString` encoding for SF-Symbol-only
vs asset-bearing entries, `ResolvedTabIcon.parse` decoding
(including asset names with spaces and defensive colon handling),
full round-trip in both directions.
- `IconDetectorIdleHeuristicTests`: covers `user@host:path`,
`user@host:/path`, `~/path`, `/abs/path`, and `…/compact/path`
prompts; commands with spaces, single-token commands, and TUI
spinner titles must not be classified as idle. Documents the
benign edge case where bare absolute-path executables are treated
as prompts.
To enable direct testing, `WorktreeTerminalState.isLikelyIdleTitleByShape`
is promoted from `private func` to `static func`. The only call site
inside the type now uses `Self.` to dispatch.
Also adds `Assets.xcassets/CommandIcons/README.md` recording brand-
artwork sources (Simple Icons CC0 + Lobe Icons MIT), trademark
disclaimer, and the recipe for adding a new entry.