This uses persistent Matcher objects that can reload their content and
provide a hash string that can be used to check if it's changed. The
cache is local to each Matcher object instead of kept globally.
Obviously needs Go 1.4 to go back in.
I am still open to doing fix-up's on rescan interval on Windows, which
would still allow getting rid of all the Windows code.
Frankly, we could just defer creations of links (like we defer deletions of files)
in hopes that the target gets created, and if it doesn't, well tough luck, you'll
get a file symlink.
To be honest, nobody would even notice this 'issue' as I am sure nobody on
Windows uses symlinks.
But at the same time, this ugly code is hidden away in some creppy file in
it's own module far far away, and the interface that it exports is fine'ish,
so I wouldn't mind keeping it as it is.