Iterates a directory with an optionally applied filter and recursion.
Note: The iterator returns files and directories. If you'd like to iterate a directory recursively and retrieve either files or directories, wrap the iterater in a FilteredIterator that removes the unwanted entries.
This is required as filtering directories with the built-in filter capability would stop any recursion.
@author Administrator, 2009-12-08
@version 1.0