More robust Partitioner::set_node_processor_ids
More robust Partitioner::set_node_processor_ids

Hopefully this will fix the partitioning inconsistencies that we've been
managing to trigger with new mesh generators.

We need a push step after all:

It's easy with enough adaptivity to get into a position where a local
ancestor element doesn't see any ghost children around one of its nodes,
at which point we can't build up a good query chain without starting
from pushed temporary pids.

But while we're at it, let's make sure we don't do any communication in
serial where we don't need it.

BalticPinguin/libmesh,dschwen/libmesh,BalticPinguin/libmesh,BalticPinguin/libmesh,BalticPinguin/libmesh,dschwen/libmesh,dschwen/libmesh,libMesh/libmesh,BalticPinguin/libmesh,BalticPinguin/libmesh,jwpeterson/libmesh,libMesh/libmesh,libMesh/libmesh,BalticPinguin/libmesh,roystgnr/libmesh,libMesh/libmesh,dschwen/libmesh,dschwen/libmesh,dschwen/libmesh,jwpeterson/libmesh,dschwen/libmesh,BalticPinguin/libmesh,libMesh/libmesh,roystgnr/libmesh,roystgnr/libmesh,roystgnr/libmesh,jwpeterson/libmesh,roystgnr/libmesh,roystgnr/libmesh,jwpeterson/libmesh,libMesh/libmesh,jwpeterson/libmesh,libMesh/libmesh,dschwen/libmesh,roystgnr/libmesh,libMesh/libmesh,jwpeterson/libmesh,jwpeterson/libmesh,jwpeterson/libmesh,roystgnr/libmesh