Initialise cell_orientations correctly in parallel

We define cell orientations on the cell set of the mesh, but this set
has no halo object (we can only do halo exchanges on dof sets).  Hence,
in parallel, the halo region of the initialised cell orientations was
incorrect.  Instead, build the cell orientations on the DG0 function and
then copy the resulting values back into the Dat defined on the cell
set.