New default do-file iter implementation

Implement a new iterator over the default do-files for a given
filename. Return a struct with the do-file, base-name, and extension in
each iteration. Use Path instead of string for do-file and base-name,
use byte-vector for the extension (since it can be empty) -- this allows
us to support any legal file-name.