uim, gtk-exe-env, qt-plugin-env: Add input method modules for GTK+ and Qt

This patch adds NixOS modules managing GTK+/Qt plugins such as input methods. The patch also adds uim, a multilingual input method framework.

The module is based on @iyzsong's idea proposed at https://github.com/NixOS/nixpkgs/pull/2450#issuecomment-42130139.
As discussed in #2450, this is not an ideal solution, but it works for most cases.

### How to setup uim

For system wide installation:

1. Add `uim.enable = true;` to the `configuration.nix`.
2. `nixos-rebuild switch`.
3. `uim-pref-gtk`, `uim-pref-gtk3`, or `uim-pref-qt`.

For per-user installation:
```
nix-env -i uim
export GTK_IM_MODULE=uim
export GTK_EXE_PREFIX=~/.nix-profile/
export QT_IM_MODULE=uim
export XMODIFIERS=@im=uim
# ↓ if you does not use NixOS:
export QT_PLUGIN_PATH=~/.nix-profile/lib/qt4/plugins
# ↑ NixOS export QT_PLUGIN_PATH in environment.nix
uim-xim &
uim-pref-gtk
```

### How to add an input method

See `nixos/modules/programs/uim.nix` for example.

1. add the package to `gtkPlugins` and `qtPlugins` to build plugin environments.
2. set `environment.variables.GTK_IM_MODULE`, `environment.variables.QT_IM_MODULE`, and `environment.variables.XMODIFIERS`.
3. set `services.xserver.displayManager.sessionCommands` to start xim bridge.
4. (optional) add the package to `environment.systemPackages` to install helper commands.

### Internals

The module builds environments containing the toolkits (GTK+ and Qt) and plugins. Then it set `GTK_EXE_PREFIX`, `GTK_PATH`, and `QT_PLUGIN_PATH` to point those environments. Toolkits and plugins can execute additional commands (e.g. `gtk-query-immodules-2.0`) while building the environments.