replace fixed key mapping with customisable keymap

A keymap is used as a dictionary from an input key (say "q") on a
regular keyboard to a steno key (such as "S-").  Since there may be more
than one key on a keyboard mapped to a single steno key, the dictinary
is generated from a list of steno keys mapped to a list of keyboard
keys.  The keymap is stored in the configuration file as a JSON array.

An ordered dictionary is used for display purposes only, i.e. to list
the key assignments in the same order in the configuration dialogue.

This feature can be used by Dvorak typists who do not normally use a
QWERTY layout, or those with keyboards featuring unusual key positions.