support for more than 2 dimensions in hdf5 files

This PR has two important changes to the hdf5 file handling:
 1. Remove all c++ `assert` statements, as they were inactive anyway
 2. Added support for a 2-4 dimensional array

Because `NDEBUG` is set in the Makefile all c++ `assert` statements were inactive. This can also be seen in of the the statements in `io.cpp`:
```c++
     H5T_class_t class_;
      status = H5LTget_dataset_info(
         file_id, dataset_name_, dims, &class_, NULL);
     assert(class_ == H5T_NATIVE_FLOAT);
```
This assert statement is *always* false, because `class_` can only take either of the following values: H5T_INTEGER, H5T_FLOAT, H5T_TIME, H5T_STRING, H5T_BITFIELD, H5T_OPAQUE, H5T_COMPOUND, H5T_REFERENCE, H5T_ENUM, H5T_VLEN, H5T_ARRAY.

@sergeyk I think you mainly worked on the hdf5 support earlier. Let me know what you think.