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.
I think this is a useful function to have for different purposes (for example computations with moving meshes). Sadly, this interface is not easy to use. Would it be slow/complicated to have a simpler interface (without user flags and without ```vertices_with_ghost_neighbors```)?