refactor(tab-icon): collapse two icon-lock bools into a single enum
Replace `isIconLocked` / `isScriptIconActive` (which together encoded
three valid states plus one impossible one — `(true, true)`) with a
`TerminalTabIconLock` enum: `.auto < .script < .user`. The precedence
chain is now expressed in the type, and impossible states are
unrepresentable.
Use `.auto` instead of the more obvious `.none`: at call sites like
`tab?.iconLock == .none`, Swift would otherwise infer the right-hand
side as `Optional.none` and silently compare against `nil` — caught
by the existing `clearIconOverride*` tests once we used the enum
through an optional chain.
`overrideIcon` and `clearIconOverride` no longer need to clear
sibling flags by hand — assigning the new state replaces the whole
field.