10-20% improvement by replacing uuid; README: new benchmark data
more node fixes
add `beforeFreeze[.*]` callbacks

The suite of beforeFreeze callbacks cover every current tree
alteration scenario.

The `beforeFreeze` callback is called after every tree modification,
after ancestry setup and before finalization, and given the new
`tree`.

In addition to beforeFreeze, four more specific callbacks are
available, and are called with the new tree and the
instigating/related node.

 * `beforeFreeze.data`: receives the changed node
 * `beforeFreeze.parseAndAddChild`: receives the new child node
 * `beforeFreeze.addChildNode`: receives the new child node
 * `beforeFreeze.remove`: receives the parent of the removed node

All of these are called before finalization, and so the callbacks can
modify the tree before it's finalized.
v0.3.0: beforeFreeze[.*]

add supplemental files