implement recursive wildstars

A sequence of two consecutive wildstars, `**`, acts like a regular
wildstar `*` except that it also matches on path separators,
making them useful for matching on arbitrary subdirectories.

For example, the pattern "somedir/**/needle.txt" would match:

* somedir/one/needle.txt
* somedir/one/two/needle.txt
* somedir/other/needle.txt

Patterns such as "somedir/**/*.txt" are also possible.

The previous behavior of collapsing many consecutive wildcards to
a single one has been changed so that now a sequence of more than
two consecutive wildcards is treated literally.