v4: Add preedit support, remove serial check. I misread the protocol, the current state can be replaced even with a differing serial. What I can't do with a differing serial is send set_text_change_cause in response, which doesn't matter since surrounding text isn't supported.
The preedit display won't work with the builtin IME, unless the patch mentioned in [this thread](https://gitlab.winehq.org/wine/wine/-/merge_requests/7241#note_94062) is applied. The problem is that without it, the subsurface for the preedit gets created with Default IME as the parent, which has no surface role and is unmapped. The subsurface parent really needs to be the surface that has text input focus. If that patch looks ok, I can push it to this branch as well.