More valgrind fixes
Created by: paulromano
This PR is a continuation of #1088 to plug memory leaks found by valgrind. The primary fix here is in the way that we read strings out of HDF5 files. I've always found it a little bit finicky to read strings from HDF5 files and I've now realized the reason is that we've always been reading them as null-terminated as opposed to null-padded (which is actually what numpy/h5py will use when writing fixed-length strings).