Refactor / Rename

* Put as much common code as possible in the iterator logic
* Rename scandir_helper as listdir (which is what it really is)
* Factor out common iterator startup code to avoid having to decode/recode unicode path name