build the menu using Actions where possible

The MENU_OPTIONS tree was cleaned up and moved into the buildMenu
method, so that most of the GUI is already built by the time it is
invoked. This lets it use Actions registered by the interpreter,
debug panel, or other components as menu items, which avoids a lot
of repetition.

This commit could potentially be considered a UI regression, since it
changes the "Watcher" button to "Show watcher" or "Hide watcher"
depending on context. I think this is an improvement, but it doesn't
match the screens in the first chapter of the book.
I'll ask Mark about it later.