Use the new MeshBase::get_boundary_info() API in libmesh.

Refs libMesh/libmesh#388.
Reduce the number of times we call get_boundary_info().

Generally clean up some code.

Refs libMesh/libmesh#388.
Allow users to override compiler settings

This is helpful when one uses distcc. If you configure libmesh with
CXX='mpicxx' and then you want to use distcc, you have to go back and
reconfigure libmesh. This allows people to supply the libmesh_CXX, libmesh_CC,
libmesh_F77 and libmesh_F90 variables, thus using distcc without libmesh
reconfigure.

Closes #4171
Merge pull request #4122 from jwpeterson/boundary_info

Use the new get_boundary_info() API in libmesh
Merge pull request #4172 from andrsd/distcc

Allow users to override compiler settings