refactor RecursiveFiles[Iterable/Iterator] to use SubFileSystem
fixed RecursiveFilesIterator to keep directories to visit on stack so traversing algorithm uses less memory on average