Add a generator that takes a matcher function.

The sole purpose of the matcher function is to check files names
against a query and return the result of the match. This method
is a generalization of the previous three, and they can be
simplified into ussages of this method.
Simplify the FileMatcher methods to use filesMatching.

Using the placeholder underscore syntax, each method specifies
how it wants to match file names, that is, the first underscore
is the filename of filesMatching, and the second parameter is
the query passed to it from the other three methods.
Reduce redundant parameter passing.

The filesMatching method was doing nothing with the query parameter,
except to pass it back to matcher, which came from a context which
was already known to the caller!

We can then reduce filesMatching to just take a matcher that just
takes a file name and returns a boolean indicating the match.
Each matcher passed already knows its own query, and filesMatching
need not be concerned with it.