cd-traverse: iterate on cd **pattern by depth

This patch makes the cd_traverse_descendant function iterate by level,
instead of full directory trees. This is more fast and convenient with
huge file hierarchy, as we rarely want to go very deep.

It also interprets the argument as a pattern, for consistency with
cd_traverse_ancestor.