support packing in to a user supplied buffer with nvlist_pack_buffer()