Don't use a UniquePathKeyFileStore for the module descriptors, as the descriptor paths do not contain the content hash (they contain the repository id hash).
Changed the handling of '?' wildcard in file patterns to better match Ant. It now matches exactly one character rather than zero or one characters.
Don't use regular expressions for file patterns segments that don't contain any wildcards, or that have only a single '*' wildcard prefix.
Don't use regular expressions to match '*' pattern segment. Also removed 'file' flag from PatternStep.matches() as it isn't used by any implementation.
Don't use iterators in pattern matching.
Use the factory to build the step for a given pattern.