uxkb: add Compose (dead-key) support

Dead keys are special keys which have no immediate effect when pressed,
but instead they modify the result of subsequent keys. For example,
pressing the <`> key (the dead key) and then <u> may produce the symbol
ú. Such sequences can be more elaborate and consist of several keysyms.

The compose mechanism has two main pieces of configuration:

1. The Compose file, which defines the compose sequences. It is picked
   by the user's locale. See the Compose(5) man page; most of it is
   supported. These files are currently a part of libX11, but some users
   write their own. For example:
   /usr/share/X11/locale/en_US.UTF-8/Compose

2. The user's XKB keymap, which defines which keys are dead keys (that
   is, produce keysyms of the form dead_*, which are normally used in
   Compose sequences) and which key is the Compose key (which starts
   many Compose sequences). For example, the us 'intl' variant.

A new --compose command-line option is added, and is off by default.
In any case, if the initialization fails, there is simply no Compose
support, it is non-fatal.

Here is an example configuration which uses dead keys:
    kmscon --compose --xkb-layout=us --xkb-variant=intl --xkb-options=ralt:compose

This feature (and more) is usually provided by an input method. But we
use the lightweight support provided by xkbcommon.

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