Move dataset creation code to separate file

We may need to call it from other places without restriction
on naming convention.
Fix uninitialised variable warning
No longer create resizable datasets

Resizable datasets can not be memory-mapped. Memory mapping
is important so disable resizing and force datAlter to
resize by creating a new dataset, copying the data in, deleting
the original and then renaming the temporary. The hope is that
datAlter is called far less often than datMap and we will gain
in speed overall (possibly at the expense of file size but that
is to be determined).
if somehow there is already a temporary dataset there, delete it

If it's the right size we may want to consider reusing it...
Attempt to mmap() in datMap

If an offset can be retrieved from H5Dget_offset and if the
data type on disk matches the data type being requested, then
it is possible that mmap() could be used.

Currently this seems to be unreliable even when restricted
to memory mapping readonly files so the code is currently
disabled by explicitly setting the try_mmap variable to false
in line 255.

If that line is removed an attempt will be made to memory map
readonly files and this mostly works but ccdexercise gets
confused with the final mosaic and this has not been debugged.
Improve error message when datMap has worked but gets the wrong answer
Allow long names to be used

For error messages we retrieve the HDS component name. datAlter can
sometimes give us deliberately long names and we should allow those
to be truncated without it preventing the writing of the data
to the component.