Make concat work with special filenames

Concat used to break badly with filenames containing active shell
characters such as question marks or asterisks.

The name of the fragment directory is now a sha1 hash of the target
filename, thus avoiding having to deal with special characters in most
places.

The shell script concatfragments.sh now requires bash and uses more
robust methods for enumerating files.  This should allow arbitrary
filenames, only limited by the filesystem.
Add a test for special filenames

This test creates three files: One with question marks, one with
asterisks and one with newlines in its name.