Improve LinuxKeyboard to handle dead keys

The patch improves LinuxKeyboard in several ways. The most important change is that it now
uses the current input method and handles "dead keys" so that we can type characters with
diacritics (i.e. "α" => "ά").

Changes:

 * Properly handles dead keys and allows characters with diacritics.
 * Gets rid of the keycode conversion table and replaces it with a simple subtraction.
 * XLookupString replaced with Xutf8LookupString (when possible) so it should work better.