Parallel constraint calculation on SerialMesh too

This will hopefully be a speedup for everybody, but more importantly
it should fix a bug where FEMFunctionBase boundary conditions could
not be used on a SerialMesh on more than one processor.
Comment clarifying a libmesh_error()

I'm choosing to make the SerialMesh behavior less robust here in order
to catch inefficient SerialMesh usage even when that usage isn't
technically incorrect.  We might want to make the error test more
complicated and change this error to a debug-mode warning in the
future.
Only send_receive nodes when we need to

With a serialized mesh sending nodes redundantly is inefficient; with
a synchronized SerialMesh doing so is currently an error.
Replace use of mkstemps with mkstemp to accomodate glibc < 2.11
vector_as_adjoint changes

Change name to vector_is_adjoint; anybody using this API probably
should be paying attention to this commit anyways.

Fix default vector behavior: handle projections with primal rather
than adjoint BCs.  I'm not sure why this took so long to trigger a
regression anywhere; are we doing a redundant constraint application
with the correct rhs after projections?
Slight adjoints_ex3 generalization
Add semilocal_elements iterators
Add "face-local" element iterators

This covers enough ghost elements for most purposes, doesn't require
expensive set construction like a node-local (semilocal) element
iterator does, and works without (broken on subdivision triangles,
expensive everywhere) inverse_map() to test node locations.
Fix simple homogeneous constraint communication

This turns out to be the underlying bug behind the adjoints_ex3
regression when we parallelized constraint computation on SerialMesh.

This diff is also likely to fix some parallel heterogeneous Dirichlet
adjoint boundary condition cases or some parallel hp refinement cases,
but nothing I've managed to trigger yet.