A library for matching files using patterns such as '"src/**/*.png"' for all
'.png' files recursively under the 'src' directory. Features:
* All matching is /O(n)/. Most functions precompute some information given only
one argument.
* See "System.FilePattern" and '?==' simple matching and semantics.
* Use 'match' and 'substitute' to extract suitable strings from the '*' and
'**' matches, and substitute them back into other patterns.
* Use 'step' and 'matchMany' to perform bulk matching of many patterns against
many paths simultaneously.
* Use "System.FilePattern.Directory" to perform optimised directory traverals
using patterns.
Originally taken from the <https://hackage.haskell.org/package/shake Shake
library>.