Fix distort_random for distributed meshes

Previously, distort_random produced unconnected meshes for distributed meshes. Now we don't move vertices that belong to two or more different processes. The resulting mesh is connected.
You can pre-compute who you expect packages from using `Utilities::MPI::compute_point_to_point_communication_pattern()`. This might make it more specific where you get communication from and might avoid the `MPI_Barrier` below.