fix MenuItem label sorting of procs

@macfanatic's changes in 452956ec changed label procs to be evaluated in the view context,
but this broke `MenuItem` sorting. This commit pushes the logic back down into `MenuItem`,
and provides a way to pass in an optional context in which to evaluate symbols and procs.

+ forces `MenuItem`-specific logic out of `TabbedNavigation`
+ `items` now handles both sorting and display decisions
+ `add` was refactored for clarity
+ integrates fixes from #1988