Allow the menu shortcuts to be set from one or more "hotkeys" files.

The interesting parts are in gmenu.c and hotkeys.c

To use this you will need to copy
hotkeys/en
to
$prefix/share/fontforge/hotkeys/en

As there is an autotools transition happening I didn't create
makefile.in rules to install the hotkeys files.

Each window, the glyph, fontview, and metrics windows all have a new string
type assigned to them. Hotkeys can then be assigned to menu items by selecting
them in the key of the hotkey and the remainder defines the key to activate that
action. For example:
CharView.Menu.Point.Curve: 7
Will select point/curve from the menu when you hit "7".

The menu prefix is used to allow stand alone hotkeys to also exist. So in a
subsequent patch we might have
CharView.Hotkey.SpiroMode: ctl+5
to select an action to perform which is not exposed in the menu.

The hotkeys files are loaded from a subdirectory of the share
directory in your $prefix. First your full locale is tried, perhaps
starting with en_AU.UTF-8 and then all dot and _ chars are trimmed one
at a time. So for me I would eventually load the "en" hotkeys file.

After these system wide hotkeys are loaded the ~/.FontForge/hotkeys file
is loaded allowing the user to overwrite the system selections.

The menu handling code is updated to work out what the hotkeys are for
each menu item and display what is currently set for the hotkey. So
for example, a binding like
CharView.Menu.File.Open: Ctl+g
will show the ^g in the menu as the description of the file/open menu
item.

Some initial provision for saving is there, but it saves to a /tmp/
file at the moment. The idea is to allow the hotkeys to be changed by
fontforge itself and customizations are automatically saved to only
~/.FontForge/hotkeys

This is why loadHotkeysFromFile() has the isUserDefined flag which is
retained for each individual hotkey. So then a save() of the hotkeys
can only save user defined hotkeys back to their ~/.FontForge/hotkeys
file.

This pull request is not clean. Not final. Not designed for merge. It
is up here so that folks can easily see the code and we can work out
where things need to go for an initial merge.

Still todo:

* autofools for the hotkeys subdirectory.
* other locales than english need hotkeys files.
Some comments and updates from the mailing list.
A little more comment!
Some minor updates, some things I didn't add to the previous commit.
Add some of the new desired hotkeys into the default english file.
Allow multiple bindings for the same key if the user has used
+CharView.Menu...
otherwise, remove the previous keybinding.

Also, the code which triggers things now uses a All() function to
get all the actions for a given event (keysym + state).
You can now switch tabs in charview using the new hotkey system.
Merge remote-tracking branch 'upstream/master' into vanilla-2012sep-new-hotkeys-v2
A first round of cleanups after pulling in the upstream vanilla for this branch.
Conflicts:
	Unicode/ustring.c
	fontforge/Makefile.dynamic.in
	fontforge/Makefile.static.in
	fontforge/charview.c
	fontforge/metricsview.c
	fontforge/startnoui.c
	fontforge/startui.c
	gdraw/Makefile.dynamic.in
	gdraw/Makefile.static.in
	gdraw/gdrawP.h
	gdraw/gmenu.c
	gutils/Makefile.dynamic.in
	gutils/Makefile.static.in
	inc/ustring.h
Updated to the new build system. Hotkeys are now loaded from a "default" file first
and then locale speciific files, and then ~/.FontForge/hotkeys. This should give a nice
range of hotkey definitions allowing customization on many fronts
This one is going to be needed too... install the "default" keybindings to a
subdirectory of the sharedir.
Remove 1 stamp.c file from gtkui directory. 1 less file to think about now.

While grepping libffstamp.h found that gtkui directory had an "old" stamp.c
and, therefore removed it so that it is one less file for developers to see
This was originally in pull request #83 earlier
Update utype[] for files utype.c and utype.h from 'unsigned int' to uint32

This was done to help describe these data arrays better since int can be
defined at various sizes on different platforms and compilers, but this
data is definitely 32bits wide. This was previously part of pull request#83
hotkeysave() now works as expected and is called at the right place.
A new hotkeySet to allow hotkeys to be set pragmatically.
Some more docs for the dlist abstraction.
Some gettext fluff for messages.
Let there be docs!
Merge remote-tracking branch 'upstream/master' into vanilla-2012sep-new-hotkeys-v2
Strange, a whitespace only conflict? yay for blank lines or something

Conflicts:
	fontforge/views.h
some docs for how I intend to do python dispatch from the hotkey system
AddR() memory leak on exit - uses free now

Used Malloc/Free so that program does not exit abruptly. Valgrind showed
that memory wasn't released at exit.
In main(), if argv[i]="-home", then only need to try to chdir to HOME once.
Merged (__Mac) chgdir(HOME) with upper test for "-home". Fixed a '-' bug.

(__Mac) specific. Test for "-psn_" on command line and also do chdir(HOME).
Upper test checked for -home, but not --home, therefore added modification
to recognize both methods on the command line.
fix an infinite loop in AddExtrema