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.

Signed-off-by: Ran Benita <ran234@gmail.com>
x11: add a couple of tests

Add two tests:

    ./test/interactive-x11
which is like test/interactive, but should behave exactly like your X
keyboard and react to state and keymap changes (press ESC to exit).

    ./test/x11
which currently only 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>