Refactor: Symlink functionality for state file.recurse

Resolves part 3 of 3 for issue #5645. The issue can be closed.

Added logic in state file.recurse to support symlinks.

Other various changes to support this effort.

I closed the previous request so that I could thoroughly test out my logic as mush as possible and ended up refactoring most of what I originally had. I am satisfied now :-)