Menu - Converts to a structure of items and menus with base classes that define each.  All clickable links are items while collections of items and menus are menus.
Experimental Menu - Removes the need for a file to instantiate menus and moves the prune into the menu class itself. Includes updates to tests and menus to account for this new structure.
adding the ability to modify navigation

This will allow engines and other initialization code
to modify the navigation.
(cherry picked from commit 5716a444bb6a6ad3714af150278299f1a937d936)
Menu - Fixing whitespace.
Menu - Adding specific headpin menu generation.
Menu - Cleaning up errant commas, and making as_json just contain the hash.
Menu - Fixing up the copyrights.
Merge pull request #2126 from ehelms/experimental-menu

Experimental Menu - Converts from using functions that define hashes to a more object oriented approach.