Try to sort out on disk vs in memory HDF5 data types

Before this commit there was an assumption that the data type
used in the HDF5 file was identical to the in memory data type.
Generally this was true except _LOGICAL confuses things. Historically
HDS used the Fortran 4-byte integer definition of _LOGICAL. This
seems somewhat wasteful in disk storage so in HDF5 this library
has always used 8 bit bitfield types for _LOGICAL. This obviously
did not work when we were using int32_t in the rest of the code
so now we use int32_t for _LOGICAL in memory (so all the _LOGICAL
data arrays are bigger than they need to be) but int8_t on
disk.

These changes are implemented in two ways:

- dau1CheckType now lets you request whether you want the on
  disk or in memory type.

- dau1Native2MemType can be used to convert an on-disk
  data type to in memory data type. This is useful as
  it allows code to query the dataset directly and still
  get the correct answer.

Note that both these interfaces now always return copied
data types that must always be "closed". This simplifies
a lot of things and the overhead cost seems low.

I'm not really happy because the logic for on disk vs in
memory selection is now in two distinct functions when
obviously they should be in a single location. More thought
is required.
fix a comment in datMap
fix newline in datLen