Fixes

Various little improvements. I tried to keep the commits small and coherent, so you can easily cherry-pick.
actually, this should probably read:

```go
 hdims := make([]C.hsize_t, rank)
 slice := (*reflect.SliceHeader)(unsafe.Pointer(&hdims))
 c_dims := (*C.hsize_t)(unsafe.Pointer(slice.Data))
```