Menu specification (add as required):
 It should be possible for an extension to register a menu item in a certain menu without any knowledge of how the menu is rendered.
 A menu can be enabled in a certain mode or disabled in a certain mode e.g. AMC
 A menu can have completely different contents in a given mode e.g. contributions might be in left menu on stable but in a new user menu that shows on hover in AMC mode
 Editors can update URIs of menu items e.g. On Commons, Special:Random can be replaced with Special:Random/file
 A menu itself be made of multiple menus e.g. left hamburger navigation has 4 menus right now in stable
 A menu uses a mustache template for rendering so that it can also be used on the client.
 Menus should work without JS