Use same timestamp for both data and manifest file.

Clean up the signatures for the writing and filename generation
methods so that they can take a timestamp from calling code.

Create the timestamp that will ultimately be used for generating
file names in the invoke task so the same timestamp will be used
for generating the filename of the manifest and the data file.

Handle creating the output directory, if it doesn't exist in the
top-level  write() method instead of repeating it in the format-
specific write methods.

Addresses #39