Recursive directory traversal

This is my work on trying to stabilize std::fs::walk_dir. Unfortunately, the implementation is not exactly trivial and the API is a little bigger than I hoped for std::fs. So it's an external crate for now!

Has all the goodies: follow symlinks, loop detection, control file descriptor allocation, efficient pruning, etc.