Arrow dataset pointers become invalid when an object is created in a worker
process and returned to the head node (e.g. after a parallel simulation).
refresh_ds() rebuilds the pointer by re-opening the parquet files via
arrow::open_dataset() and updates pid and dim in place. Because
refreshing is itself the fix for an invalid pointer, it checks that files
exist but does not call safe_ds() first.
Usage
refresh_ds(x, ...)
# S3 method for class 'mrgsimsds'
refresh_ds(x, ...)
# S3 method for class 'list'
refresh_ds(x, ...)