Custom archive organizations + configurable default archive format(s)

This pull request adds functionality for custom archive organizations.  The "classic" download archive assembly code just combines the "Datafile.filename" with a "rootDir" to give the pathname for an archive member.  It is now possible to configure one or more custom "mappers" to generate the pathnames ... from any information that is to hand.  A mapper can also filter out files; e.g. if your datasets include metadata files that the end-user doesn't want to know about.

The other thing that pull-request adds is the ability to configure the default archive type that is used by the selective dataset / datafile download UI.

Finally, I've changed the download code so that it gives an error if the download would have resulted in an empty archive.