= What's a node? =
DomNodes should contain either immutable properties (such as String or Datum), or other DomNodes as children.  They
can contain other fields, but the accessors should not use "get" and "set" which identify properties.

= cloning versus copying =
Note I distinguish between cloning and copying.  Cloning is a shallow copy that does not copy child nodes.  A DomNode's
copy() method should be a deep copy.  It's clone() method needn't be a deep copy.

= pitfalls =
A deep copy is needed to make state support and serialization work.  It's easy to fail to make a deep copy, because clone
will create a shallow copy that seems to work.

= conventions =
* id is a special property that identifies each node.  If non-empty, then this must be unique in the DOM tree.
* properties like "plotId" should refer to an id of another node (of that type).
* DOM Trees should not contain cycles.
* properties like "autoLabel" indicates the if property "label" was set automatically or intentionally by the user.


