import new broken-out reallocarray from openbsd libc
handle platforms where unsigned long is smaller than size_t