Use collective NumericVector APIs

This should be a performance improvement once
https://github.com/libMesh/libmesh/pull/411 is merged.  With older
libMesh versions most of these changes are just slightly terser code.

This commit includes a fix for
https://github.com/idaholab/moose/issues/4240