Three plugin lexer bugs fixed:
* `$(...)` inside `"..."` rendered its body as STRING instead of code —
lexInsideDqArith/Cmdsub restored a stale tokenStart after the inner
advance() and the IDE saw overlapping token ranges, re-coloring the
inner identifiers/numbers as the surrounding STRING. Removed the
restore in both fns.
* Top-level `$((expr))` / `$(cmd)` flipped to STATE_DQ_RESUME on close,
poisoning the lexer into STRING_DQ mode for the entire rest of the
file. Added `dqInterpResumeState` defaulting to STATE_NORMAL for
top-level opens; in-DQ opens override to STATE_DQ_RESUME.
* TypoInspection fired on `bracecomplete` / `paramsubst` / paths /
banners inside DQ strings. New ZshrsSpellcheckingStrategy returns
EMPTY_TOKENIZER for STRING_*/COMMENT/HEREDOC/SHEBANG/STRING_ESCAPE/
STRING_FORMAT tokens. Identifiers + command names still spell-checked.
Also wires the ztest builtin names into highlight_shell() so
`zassert_*` / `ztest_*` / `run_tests` render as commands (not Error).
Plugin bumped to lockstep with workspace (0.11.30).