Make tree iterator incapable of mutating tree.
Make tree iterator incapable of mutating tree.

Instead of returning an Arc<RefCell<Node>> for each node, which is an
actual pointer to the node in the tree, return an IterNode, which wraps
references to data, but doesn't return the node. This prevents
the caller from mutating the tree via the RefCell. It does require
unsafe code, but as the tree is immutable and the the lifetime of the
tree is at least as long as the lifetime of the iterator, this is safe.

justinsheehy/vertree