* It was the mouse warping, not the grabbing of focus, that caused keyboard traversal issues. Now we only mouse-warp prior to simulating a right-click via Menu.
* Despite what the docs say, `id_focused` seems to pass an index, not an ID. Now popup menu items speak more accurately.
I'm not immediately sure how to present multiple tree selections. I also don't know if I can control selection status from the input events. So, for the time being, we force a single row to be selected. This isn't the most ideal solution, but it makes debugging other issues easier, so I'll use it for now to unblock other work.
* Use new TTS.gd script rather than loading directly. TTS.gd gives us flexibility to handle TTS with the native Rust plugin on some platforms, something like a Java module under Android, etc.
* Make `Panel` focusable. This handles the case where exiting a game from the editor places focus on an element without focus, thus breaking keyboard navigation.
* Log when we attempt to grab focus so I can debug cases where focus tries to go somewhere it can't.
* Concatenate tokens then join them, rather than building up strings token by token and conditionally presenting them.
* Present `hint_tooltip` in lieu of text in some cases, and don't present it again afterwards.