test: share key-printing functions from interactive

Signed-off-by: Ran Benita <ran234@gmail.com>
x11: Add xkb_keymap_new_from_xserver()

This is a function to create an xkb_keymap directly from XKB requests
to the X server. This opens up the possibility for X clients to use
xcb + xcb-xkb + xkbcommon as a proper replacement for Xlib + xkbfile.

The X11 compatibility support must be enabled with --enable-x11 for now.
The functions are in xkbcommon/xkbcommon-x11.h. It depends on a recent
libxcb with xkb enabled.

Why not just use the RMLVO that the server puts in the _XKB_RULES_NAMES
property? This does not account for custom keymaps and on-the-fly keymap
modifications, so is not a proper solution in practice. Now the client
just needs to recreate the keymap in response to a change in the
server's keymap (as Xlib clients do with XkbGetUpdatedMap()).

The XKB requests we use are XkbGetMap, XkbGetCompatMap,
XkbGetIndicatorMap, XkbGetNames. We also use GetAtomName to resolve X
atoms.

Can test with:
    ./test/interactive-x11
which should behave exactly like your X keyboard, or:
    ./test/x11
which should print out the same keymap as
    xkbcomp $DISPLAY out.xkb
(modulo some whitespace and some constructs we do not support.)

Signed-off-by: Ran Benita <ran234@gmail.com>