Croatoan returns key structs (make-key :name :backspace) for special
keys. The on-key handler was comparing these structs to keywords like
:backspace with eq, which always failed. Keys like Enter (returned as
13) worked, but Backspace/Tab/arrows didn't. Actually, the user couldn't
delete typed characters.
Fix: normalize at the top of on-key — if the input is a key struct,
extract the :name keyword. This allows the existing keyword-based
cond dispatches to work for all keys.
Updated all tests to use (make-key :name :enter/backspace/tab) instead
of raw integer codes, matching what Croatoan actually sends.
TUI: 43/43 pass.