I moved all the geometry related code to calcmenu().
The pro is that geom is now a local variable rather than global;
and that all geometry-related code is now in one place.
The con is that it weakens performance a little bit since some
variables, such as the border, have to be reset after the window
creation.
• Parsing of stdin was simplified by using conventional stdlib functions
rather than parsing the stdin byte-by-byte.
• Splited parsing of textual input and building of internal data
structures into two different functions.
When the item->label and item->output are the same, XMenu now only
strdup() the item->label and make item->output equal to item->label.
This saves memory when the user do not write a output specification
in the input.
In previous versions, all the previous current visible menus are
unmapped and the new currently visible menus are mapped when the
current visible menu changed. Now, using an algorithm that finds
the lowest common ancestor between current and current_new menus,
only the necessary menus are remapped on the display.