Add HDF5 support and Icebridge Reader

Introduced an optional dependency on the HDF5 C++ API (a very thin wrapper around C), configurable with WITH_HDF5.  The HDF5 format is a way to describe n-dimensional array data so that array fields can be navigated in a manner similar to file-system navigation.  The current Hdf5Handler is fairly specific to the Icebridge format, and while it would work for other HDF5-based formats, depending on the way these formats are laid out there would likely be some format-specific optimizations possible.

Icebridge lays out all of its arrays in only single-dimensional arrays, so extracting a single scanner point requires aggregating data from every column in the HDF5 file.  In general, navigating through an HDF5 file is immediate since there are no streams involved - jumping anywhere in the file simply means updating an index which will be used to query.