A more generic approach to reading pandas hdf5

This PR supersedes #27.
Implemented a more generic approach to reading: read a list of blocks zipped with their indexes under a group via `readGroupNames` (which was actually leaking a resource, fixed and provided a test for that), then for each such pair read the data based on the declared type and assemble the `Frame` as before.