Add tree iterator and simple test
Add tree iterator and simple test

The iterator is suboptimal since it requires a clone of the atomic
pointer in order to work. It'd be nice to just return references to the
Arc but that seems damn near impossible since it contains a RefCell.
Furthermore, each pointer is modifiable during iteration due to the
RefCell. We just instruct the client not to do this, but we can't
prevent it.

It'd be nice to be able to just return `&'a Node` types from the
iterator, but even if possible this still has the issue that directory
edges contain Arc<RefCell<Node>>. We could change the iterator to return
a type wrapper around the Arc<RefCell<Node>> that only allows immutable
access, but then we'd also need to only provide the labels to edges in
the output of directories. This may be the best choice actually, as
iteration already will return those child edges in order and there is no
need for the client to walk the tree during iteration.

justinsheehy/vertree