On file.recurse don't recurse into directories that aren't direct descendants

When getting files as recurse candidates in the file.recurse state, directories that are not descendants of the recurse source folder but which are descendants of the root folder are being included as candidates for being copied as a part of the state.  With this change, once we have a relative filename, we check to see if the file is a descendant of the recurse root, and skip that file if that is true.