A menu capable of containing others.
:param clazz: The C++ class to use for this menu item.
:param cpp_name: The variable name to use when emitting C++ code.
:param arg_template: A list of Python format strings which will be used to
generate the C++ initializer arguments. At least one of the argumnents
must be ``%%CHILDREN%%`` which will be replaced by references to the
children.
:param title: The key in the language map for the header of this menu item
when it's opened.
:param description: Path to the description of this mode, relative to
``docs/menu``
:param children: The menus this submenu selects from.
:param name: The key in the langauge map for the string to be rendered when
this menu item is presented for selection in a submenu. If None,
inherited from ``title``. At least one of ``name`` or ``title`` must be
provided.
:param title: The key in the language map for the header of this menu item
when it's opened. If None, inherited from ``name``. At least one of
``name`` or ``title`` must be provided.
:param available_when: A human-readable description of when this menu item
is available, if it's only available in certain contexts or when the
system is in a particular state. A value of None (the default)
indicates this menu item is always available.