New tree controller structure that uses a controller for each node in addition to a controller for each list of nodes (#55768220)

Use of the tree controller hasn't changed much though the internals are radically altered. The major difference is that list_view in the controller options is now split into header_view, show_view, and footer_view.  show_views do not iterate over lists; they are called once per instance.

This fixes the problem where subtree lists were being fully redrawn when list items were added or removed.  The incremental changes were pretty trivial in comparison to the rest of the effort (see last commit).