add uim: A multilingual input method framework.

UIM is a multilingual input method framework (i.e. programs used to input Japanese, Chinese, Korean, and other complex languages) commonly used in Japan.
This patch adds UIM itself as well as configuration options for input method modules for GTK+ 2, GTK+ 3, and Qt 4. The options tell GTK+ and Qt where shared libraries of input modules are, so that GTK+ and Qt can cooperate with input methods.
Setting `programs.uim.enable = true` in the configuration file installs the UIM and configure GTK+ and Qt. Other input method frameworks such as Fcitx can utilise options `gtk2ImModules`, `gtk3ImModules`, and `qtImModules` to better cooperation with GTK+ and Qt.