I made the Metadata and SelectableEntry classes subclasses of Observables, and the SelectableEntryNode and MetadataNode implementors of the Observer interface. I also had to hand each Node a reference to the model so that it could call the appropriate nodeXXX function on the model when the metadata/entry changed. This was a bit of a pain =).
I fixed a bug in MetadataEntryTask.CloseTabAction where the wrong "remove" method was called to remove the current tab from the view.
I removed the "label" field from the SelectableEntry class. That is now defunct since the label attribute in the corresponding DIV element is taken up by the SelectableEntry's short name.