refactor: move choice focus onto a signal and drop the imperative node accessors

`unstyled::choice` keeps the option it wants focused in a signal that its
buttons bind to, replacing per-option `NodeRef`s and the vector of focus
signals it used to scan.

The `focus_*` helpers and the `*_hovered`/`*_focused`/`*_signal` lookups that
reached into a component's state by `NodeId` had no callers left outside their
own re-exports, so they are gone along with the `NodeRef`s and state fields
that only existed to serve them. Components still publish what the tests read
through `set_component_state`; everything else flows through handles and props.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017W8YfdzDmZcR8A76jRjvZY
25ffe239beBE3 Agent committed on 9/11/2026, 2:21:08 PMparentdc49769
19 files changedLine totals unavailable