Copying over some changes from foo branch
Moved SubMenuItem to its own class and added children array for nested
menus.