Add directory abstraction to facilitaty traversal.

The new filesystem class vast::directory serves as an interface to directory
enumeration and traversal. It renders vast::traverse obsolete, as it provides a
much nicer range-like interface.