Dat.data_ro returns read-only view of the data

Remove all calls to maybe_setflags and leave Dat._data always writable.
We can use needs_halo_update as a dirty flag. It is being set when
accessing Dat.data but not Dat.data_ro.

Previously we had the issue that a Dat argument to a parallel loop
might require a halo update, but was set read-only.

One of the semantics we lose with this change is data acquired with
Dat.data becoming "magically" read-only after a par loop.