keybindings: Rewrite the modmap code so that it uses libxkbcommon

This removes our Xwayland dependency in the native path. The direct
grabs are still there for the X11 backend and are a bit disgusting,
but that's OK. We can refactor it out later.

This introduces some pretty lousy hackery because it depends on
https://github.com/xkbcommon/libxkbcommon/pull/10 , and I really
don't want to wait on that to squash this dep.
keybindings: Rewrite the keymap code so that it uses libxkbcommon

This way we aren't depending on Xwayland for native key mapping support,
and are instead using the native interfaces.