Tpetra: Distributor: Fixed copy constructor; factored out common init.

Distributor's copy constructor wasn't copying all of Distributor's
data.  This commit fixes it.  It also factors out repeated code from
Distributor's different constructors into a private init() method.
Tpetra: Added Details::congruent() to test if two comms are congruent.

"Congruent" here has the meaning of either MPI_IDENT and
MPI_CONGRUENT.  The former means that two MPI_Comm handles refer to
the same object.  The latter means that the two MPI_Comm have the same
number of processes in the same order.  I've extended this to its
logical meaning for a SerialComm (congruent to a Comm if and only if
the latter has one process).

This is useful for debugging.  I have debugging column Map union in
mind, but it's useful for other things as well.
Tpetra: Map: isSameAs now tests for congruence of the communicators.

isSameAs no longer requires that the input Map's communicator is
identical to the left-hand side Map's communicator.  Instead, it now
requires that the two communicators are congruent (have the same
numbers of processes in the same order).  (We never tested that the
communicators were identical before.)  Making the test for congruence
explicit should help with debugging any issues related to
subcommunicators.  It should also make it easier for Tpetra to
duplicate communicators in the way that the MPI standard recommends
(to prevent pollution of the user's communicator with nonblocking
messages from Tpetra operations), even though we don't do this yet.
Tpetra: Map: In debug, isSameAs & isCompatible now check proc count.

In a debug build, Map's isSameAs and isCompatible methods now check
initially whether the two Maps' communicators have the same numbers of
processes.  If not, they throw an exception.  This should help
debugging with subcommunicators.
Tpetra: Import: Factored out common code in ctors into init method.

This commit factors out common code in Import's constructors into a
separate private 'init' method.
Tpetra: Import: Removed remoteGIDs_ temporary array from instance data.

This makes Import's initialization process look more like Export's
initialization process.  It also removes an instance datum that is
always null except during the constructor.
Tpetra: Import: Removed comments showing how to implement setUnion.

setUnion needs an optimized implementation.  The comments are supposed
to help with that, but I want to make sure that they are correct and
sensible before I show them to other developers.  For now, I'm
removing them in case they are incorrect and unintentionally
misleading.

Build/Test Cases Summary
Enabled Packages: Tpetra, Belos, Ifpack2, Xpetra, MueLu
0) MPI_DEBUG => Test case MPI_DEBUG was not run! => Does not affect push readiness! (-1.00 min)
1) SERIAL_RELEASE => Test case SERIAL_RELEASE was not run! => Does not affect push readiness! (-1.00 min)
2) MPI_DEBUG_SS => passed: passed=174,notpassed=0 (6.56 min)
3) SERIAL_RELEASE_SS => passed: passed=159,notpassed=0 (12.13 min)
4) MPI_RELEASE_SS => passed: passed=174,notpassed=0 (15.47 min)
Other local commits for this build/test group: f99c362, 5688881, 9c4725b, f3b1502, 110f2ff, 8449fd1
Piro: Added missing header include directives

The missing headers could cause compilation errors, depending on the
build configuration.

(Thanks to Eric Phipps for pointing that out)
Galeri now produces stiffness and mass matrices separately. Needed a
new problem class to keep from conflicting with other stuff.

Build/Test Cases Summary
Enabled Packages: Galeri, Ifpack2, MueLu
0) MPI_DEBUG => passed: passed=27,notpassed=0 (1.72 min)
1) SERIAL_RELEASE => passed: passed=28,notpassed=0 (0.99 min)
2) MPI_DEBUG_SS => passed: passed=71,notpassed=0 (1.35 min)
Panzer: Fixed a bunch of compiler warnings
Piro: Added missing namespace qualification
Piro: Added missing header include directives

The missing headers could cause compilation errors, depending on the
build configuration.

(Thanks to Eric Phipps for pointing that out)
MueLu: Guarding timer numbering with ifdef

Previously the timer numbering was always on.  (I was the one who removed the ifdef guard.)
Timer output looked like this:

   MueLu: TransPFactory 22 : Transpose P     0.2463 (1)  0.2518 (1)  0.2579 (1) 0.2518 (1)

The idea is that the numbers give a unique identifier to make post-processing easier.

I've reintroduced the ifdef, but it is defined by default.  In order to disable timer numbering,
configure MueLu with the cmake option

    -D MueLu_ENABLE_PROFILING:STRING=OFF

Build/Test Cases Summary
Enabled Packages: MueLu
Disabled Packages: MOOCHO
Enabled all Forward Packages
0) MPI_DEBUG => Skipped configure, build, test due to no enabled packages! => Does not affect push readiness! (-1.00 min)
1) SERIAL_RELEASE => Skipped configure, build, test due to no enabled packages! => Does not affect push readiness! (-1.00 min)
2) MPI_SS_DEBUG => passed: passed=86,notpassed=0 (10.68 min)
Xpetra: adding toXpetra support for Epetra_MultiVectors.
MueLu: Adding multivector read/write capability.
Xpetra: More MultiVector stuff.
Xpetra: Even more multivectors
MueLu: MultiVector reading
MueLu: Adding initial framework for a reuse test with Emin.
MueLu: More reuse

Build/Test Cases Summary
Enabled Packages: MueLu, Xpetra
0) MPI_DEBUG => passed: passed=12,notpassed=0 (12.58 min)
1) SERIAL_RELEASE => passed: passed=12,notpassed=0 (2.64 min)
Other local commits for this build/test group: dc91bc8, 6ddfe6a, 0b54275, 913aa60, de30f8a, dee09a9