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.