This is an attempt at a MPICH-specific C++ binding for all of MPI-1 and
MPI-2.

Goals:

1. Simple implementation that requires more of standard C++ than other
implementations (tradeoff for simplicity)	

2. Inline most calls (so that C++ code directly calls C, not an
intermediate routine).

3. Isolate parts dependent on MPICH internals into a separate set of
service routines and take advantage of being part of MPICH.

4. Implement the profiling interface.  This may be tricky.  We may
want to offer an option without profiling but with a simpler
implementation. 

5. Simplify error handling.  If an error value is returned, either
MPI_ERRORS_RETURN or MPI::ERRORS_THROW_EXCEPTIONS are set on the
object (communicator, file, or window).  Enhance the code for calling
error handlers to call Fortran, C, or C++ error handlers as required.
This only requires that the C++ errhandler create code provide the
appropriate wrapper function in C to invoke a new function.  For that,
we may want to extend the MPID_Errhandler to include a void * for
extra data that can contain a object that contains the pointer to the
function to invoke.  We can document the behavior of errors when
encountered  inside "the wrong language".



