Refactored MenuManager into subclasses

Split MenuManager into a class for each menu type, including a base menu
class which other menus inherit from.