HDF5 updates

* [x] Added testing utility function to capture standard output (useful in unit tests that check display output).
* [x] Added `describe()` method that displays the list of groups and datasets in an HDF5 file.
* [x] Refactored open/close logic.
* ~~Raise exceptions if attributes not available.~~ todo in another PR
At the end of the `with` block (see [this](http://effbot.org/zone/python-with-statement.htm) for example and p246 of the Python Cookbook).