encoding: add key, mouse, and focus encoding bindings master
Add Go bindings for the upstream key, mouse, and focus encoding APIs from key/, mouse/, and focus.h headers. Key encoding provides KeyEvent (action, key, mods, UTF-8 text, composing state, unshifted codepoint) and KeyEncoder with setopt methods for cursor key application mode, Kitty keyboard protocol flags, macOS option-as-alt, and other terminal modes. The encoder also supports syncing options from a Terminal instance. Mouse encoding provides MouseEvent (action, button, mods, position) and MouseEncoder with tracking mode, format, size geometry, and terminal state syncing. The encoder supports X10, UTF-8, SGR, URxvt, and SGR-Pixels protocols. Focus encoding exposes FocusEncode as a standalone function producing CSI I (gained) or CSI O (lost) sequences. KittyKeyFlags moves from terminal.go to key_encoder.go since it is part of the key encoding API and used by both the encoder and the terminal.