Make MenuShell.Append's type checks stricter.

gtk_menu_shell_append and related GtkMenuShell methods take a
GtkWidget * as an argument but the documentation specifies that the
child must be a GtkMenuItem (or subclass).  This change modifes the
Append method to instead take a new interface type, IMenuItem, that is
implemented by all menu item widgets (including MenuItem and
SeparatorMenuItem).

This is technically an API break but should be source compatible with
any previous correct usage of Append.