Improvements to HDF5 reader/writer

This implements the following improvements:

* The logic of creating/opening groups is simplified by using recursive reading/writing
* The ``path`` can now refer to a group or a dataset (had to be a dataset before)
* If only one table is present in the file/group, it is automatically read, and if more than one is found the first one is read (in line with the FITS format)

This also includes a fix to make sure ``--coverage`` works in Python 3.