- h5mread() crashes on an H5T_VARIABLE dataset that has null pointers!
  For example:

    library(h5mread)
    h5file <- tempfile(fileext=".h5")
    h5createFile(h5file)
    h5createDataset(h5file, "A", c(2, 3), storage.mode="character")
    x <- c(letters[1:3], "NA", NA, "")
    h5write(x, h5file, "A")
    h5read(h5file, "A")  # ok
    h5mread(h5file, "A")  # segfault -- address (nil), memory not mapped

- The meaning of HDF5 attribute "rhdf5-NA.OK" is not what I thought it was.
  In particular, it does not have anything to do with how "NA" strings should
  be interpreted. So drop all the code related to this attribute and get rid
  of the rhdf5_NA_OK member in the H5DSetDescriptor typedef.

- Add multithreading capabilities to h5mread().

- Make h5mread(..., as.sparse=TRUE) natively return an SVT_SparseArray rather
  than a COO_SparseArray object.

- h5mread():
    * Support datasets with zero dimensions i.e. with ndim (a.k.a. rank
      in HDF5 terminology) = 0.
      system.file("extdata", "krumsiek11.h5ad", package="zellkonverter")
      contains several of such datasets.
    * Support compound datasets.

- Resume work on h5summarize().

- The reshaping operation that is currently performed by
  h5mread_from_reshaped() should instead be implemented as a
  delayed operation on DelayedArray objects.

