display-page-menu: improve menu rebuilds

Rebuilding the full menu is rather expensive, so we should try to
avoid it.

Rather than rebuilding on any change anywhere in the page tree,
just process changes underneath the page that is the root of the
menu.  Rebuilding the 'add to playlist' menu because a track was
added to the play queue (which changes its name) is fairly silly.

Rather than completely rebuilding the menu, insert, remove or
update just the entry that the change affects.