Introduce a menu engine and refactor the shell menu to use it
The menu handling is done with a simplified, table-driven menu engine.
Cheetah menu is implemented on top of that engine. Both the engine and
the Cheetah menu are platform-independant, but require their clients to
implement platform-specific API.
Supported items still include only Git GUI (outside of repo currently
appears as Git Clone if folder is selected, Git Init if file is selected,
but in all cases they just execute git gui).
Signed-off-by: Christian MICHON <christian.michon@gmail.com>