Devtools dump on the user's frontend confirmed setWidgetHidden() was
correctly setting widget.type='hidden', widget.hidden=true,
computeSize=[0,-4], and draw=noop — but the widget still rendered.
The widget object has a _state Proxy that mirrors render-relevant
properties; the modern frontend's canvas-drawn ComboWidget renders
from _state, not from the top-level widget object.
Extend setWidgetHidden() to also mutate widget._state (type, disabled,
label) when present, with try/catch in case the Proxy traps make any
of those read-only. The original _state values are saved so unhide
restores them.
Refs #216 (pending runtime verification)