More HDF5 Datatypes

This attempts - and fails! - to reach parity with @rwcarlsen's recent PR that added some types to SQLite.   This adds full support for the fixed- and variable-length datatypes corresponding to these C++ types:

* `set<string>`
* `list<string>`
* `map<int, double>`
* `map<int, string>`

I was slowed down by a bug I found in the `H5TBappend_records()` function.  I implemented a general solution, which in addition to actually working may be slightly faster than the previous implementation. 

I might not have much time to work on this in the next few days so I wanted to get it out there now.
do we want this cout?