MPI_SIGNED_CHAR support with MPI 2

And *only* with MPI 2, where it's available.  We won't be using this
in the library but it'll be nice to support for other apps using
Parallel::
We'll want unsigned types for dof ids
More XDR datatype options
Fix boundary_id_type independence

Replace some hardcoded "short" with "boundary_id_type", and switch the
value of invalid_id to something that'll squeeze into a signed char
Merge branch 'master' of github.com:libMesh/libmesh