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

The idea is that you have menus and items. Items are single entities that contain a path and represent what a user would click on to navigate to some portion of the application.  Menus represent collections of items and/or other menus and can define how they are expected to be visualized.  Each contains their own authorization rules and the menu object now includes the knowledge on how to prune and add additions to itself.