use a thread-safe file store implementation for writing digested asset files

By default, a null store is used which means no files will be
written.  Config a file store path to enable writing digested files
in a thread-safe manner.

@jcredding this effectively puts in the null pattern on digesting asset files.  Ready for review.