Reimplement directory traversal to work for like XML traversal.

This new method is named walk(), the old walk() is renamed to walkall().

Change the other methods to simply reuse walk().