Fixing refinement issue on DisplacedMesh.

The issue is that mesh refinement is always followed by partitioning,
which requires recomputation of the Hilbert indices.  Since the
DisplacedSystem mesh is displaced inconsistently on different
processors, this can lead to inconsistent Hilbert keys being computed
on different processors, and ultimately an error during partitioning.

I tried several more or less complicated fixes for this, but the
simplest approach seems to be to simply 'undisplace' the
DisplacedSystem mesh prior to performing adaptive refinement, and then
let it be naturally 're-displaced' when the DisplacedSystem is
reinitialized.  This seems to work fairly well, and fixes the
PF_displaced_mesh_test in MARMOT, which was not working in parallel.

Refs #4404


> On Dec 16, 2014, at 7:30 PM, Derek Gaston <notifications@github.com> wrote:
> 
> In framework/src/base/UpdateDisplacedMeshThread.C:
> 
> > +
> > +void
> > +UpdateDisplacedMeshThread::operator() (const NodeRange & range) const
> > +{
> > +  NodeRange::const_iterator nd = range.begin();
> > +
> > +  for (; nd != range.end(); ++nd)
> > +  {
> > +    Node & displaced_node = **nd;
> > +
> > +    // Get the same node from the reference mesh.
> > +    Node & reference_node = _ref_mesh.node(displaced_node.id());
> > +
> > +    // Undisplace the node
> > +    for (unsigned int i=0; i<LIBMESH_DIM; ++i)
> > +      displaced_node(i) = reference_node(i);
> Is this worth optimizing a bit more? This won't vectorize...
> 

How do we make it vectorize?