Make menuitem more permissive, add interfaces that define interaction.

This inverts control of creation from the menu, and makes it stupid simple to add your own menu item controller / item.

For instance, here's a gist with a sample menu item / controller that simply outputs the current date time in a div: https://gist.github.com/KorvinSzanto/6fa4a710328564ff39fc