This must be called on each HDF5 file to flush buffers to disk
data loss can occur if program terminates before this procedure
We don't reference count because applications might also invoke HDF5
directly.
close_hdf5_interface is when you know you have exactly one HDF5 file in your
application, if true it closes ALL files, even those invoked directly from HDF5.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.