Upgrade TreeController

-   Add `initiallyExpanded` configuration property.

-   As an alternative to simply rendering a tree with indentation depth,
    add support for drawing junctions at each indentation depth of each
    row of the tree.

-   Make the tree controller react properly to changes to the underlying
    content (tree model).  Produce a separate TreeControllerNode hierarchy
    (tree view-model) for each content root, so expanded/collapsed state is
    preserved independently for each content root.  Use a WeakMap so the
    TreeController only tracks the view-model for content that still exists.

    This is accomplished by making a thin TreeController wrapper class that
    tracks roots for each content and forwards its configuration properties
    (childrenPath, initiallyExpanded) to each root, and mirrors the current
    root's iterations array.

-   Make insensitive to the order in which configuration properties are set.

-   Remove distinction between a tree controller iteration and a tree
    controller node.  Tree controller nodes now serve as iterations.

-   JSDoc'd.
-   Judgement calls made on what is private and public.

Two poke-and-prod tests included:

-   ui/tree-test/tree-test.html Provides a tree editor and tree view (with ASCII
    junctions).  The viewer and editor share a single tree controller.

-   ui/tree-test/splay-test.html Provides a view of the internal state of a
    SortedSet, which is a splay tree.  This demo illustrates that it is
    possible to create a reactive view of arbitrary existing tree data
    structures with an appropriate `childrenPath` FRB expression.

    It also demonstrates a pretty huge memory leak, which I have yet to
    isolate.