Separate gen_h5convert from h5datatype/h5type

When we read from a file, we don't want to have to define h5convert!
for the type we're reading, since we won't use it, but it's possible
that we will read a type from a file and then write that type. In that
case, an entry would exist in the jlh5type dict for the type, but we
can't know to define h5convert!. So instead, we define h5convert! on
write.