Fix bug in SourceRules that would allow a child path to bypass simplification.

The bug in question stems from the fact the simplfySet function only checked the
last directory in the base path against that the same directory at that index
in the candidate path.  Therefore, if a child directory with the same name as the
last base path component existed at the same  index in the candidate path, it would
be wrongly excluded rather than becoming the new base path.

Example: { /1/2, /6/2 } /1/2 is the base path, with the last base path component at
index 1. In the candidate path (/6/2), the directory at index 1 is also 2. Since it
is the same as in the base path, /6/2 would be wrongly excluded.

Solution: The entire base path is now expected to be a prefix of the candidate path.