Moved Document#each_node into a separate module.

This allows it to be re-used by XML::Node.
Reduce object allocations in on_axis_descendant

By using Traversal#each_node and _not_ calling on_test() (which was only called
for node_matches?) we can save ourselves a few object allocations.
Optimize descendant-or-self and child axes.

By using NodeSet#concat we can further reduce the amount of object allocations.
This in turn greatly reduces the time it takes to query large documents using
descendant-or-self.