Kokkos: TSQR: Added simpler interface to use TSQR for orthogonalization.

The TSQR::Tsqr class implements the full MPI + local (optionally with
threads) TSQR factorization.  Most users want to use its
factorExplicit() method, which orthogonalizes a block of distributed
vectors.  factorExplicit() currently takes Kokkos::MultiVector and
Teuchos::SerialDenseMatrix objects.  This is a barrier to entry for
users who want to access TSQR functionality for their own vector
classes (not Epetra_MultiVector or Tpetra::MultiVector, which already
have higher-level TSQR interfaces).

This commit adds an overload of factorExplicit() that takes raw arrays
("Scalar[]").  It removes the superfluous NodeType template parameter.
It also assumes that the matrices are stored in column-major format;
that is, it omits the "contiguous cache blocks" option, which
complicates the interface.

Please see lines 338-400 of Tsqr.hpp for the interface and its
documentation.

Build/Test Cases Summary
Enabled Packages: Kokkos, Tpetra, Belos
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=124,notpassed=0 (3.91 min)
3) SERIAL_RELEASE_SS => passed: passed=111,notpassed=0 (8.94 min)
4) MPI_RELEASE_SS => passed: passed=124,notpassed=0 (2.04 min)
MueLu: temporary compile fix.
disable Reuse.cpp test if Tpetra is disabled.
For some unknown reason only Tpetra is supported in Reuse.cpp.
Panzer: Finalization of blocked tpetra factory

Finishing "Adjust for Dirichlet" methods and unit tests.

Adding a few scatter/gather routines and imporving the blocked
tpetra unit test including a gather test

Almost ready to roll...
Panzer: Allowing work around for getComm in EpetraLOF

There was a hang on an unnessary constrcuction of a Teuchos::comm
in the auxiliary operators boundary conditions in drekar.  This fixes
that problem by introducing a new constructor on the EpetraLOF
that provides enough information so that only the gather/scatter
evaluators can be built.
Panzer: Including some thyra headers

These were implicitly included before.
Xpetra: Fixes bug; don't know why.

"The end is near. I hear a noise at the door, as of some immense slippery body lumbering against it. It shall not find me."

-H.P. Lovecraft, "Dagon"

Build/Test Cases Summary
Enabled Packages: Xpetra
0) MPI_DEBUG => passed: passed=12,notpassed=0 (14.76 min)
1) SERIAL_RELEASE => passed: passed=12,notpassed=0 (3.09 min)
Removing compiler warnings in Sierra builds
Changes to avoid goldilocks bug.
num of items to send * length per item > max integer  ==> int overflow bug
MueLu: Fixing compilation issue
MueLu: Fixing compilation error (again)
MueLu: Fixing warning
Added CG/GMRES smoothing to Ifpack. I used AztecOO instead of Belos because of
the ordering of the package list (cmake tells me Belos doesn't exist). Some
tests are also updated.
Changing the parameters of the Ifpack_Krylov test. Since there's no flexible
GMRES, need to make sure that the smoother iterates to small enough
tolerance.

Build/Test Cases Summary
Enabled Packages: TrilinosFramework, Ifpack
0) MPI_DEBUG => passed: passed=140,notpassed=0 (6.22 min)
1) SERIAL_RELEASE => passed: passed=140,notpassed=0 (5.52 min)
Other local commits for this build/test group: 15653d1
MueLu: Fixing up some reuse stuff.

RAP Pattern.

Build/Test Cases Summary
Enabled Packages: MueLu
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_DEBUG_SS => passed: passed=242,notpassed=0 (61.83 min)
ML: Modifying MLMEX to better support reuse.
Tpetra: Import: Added a better implementation of setUnion.

setUnion now uses a slightly better implementation.  This version
probably isn't much faster than the naive implementation.  However, it
now puts the GIDs in the right order so that Distributor::doPosts()
doesn't have to buffer sends, and it does so without additional
communication (beyond what the normal Import constructor itself would
have done).  It also bypasses the whole process (by calling Import's
copy constructor) if the two Imports' target Maps are the same.

Future optimizations could bypass getting remote PIDs (calling
getRemoteIndexList on the source Map) by extracting them somehow from
the two input Imports' Distributors.  This is a bit tricky because
Distributor obfuscates this information.  We could make this easier by
having Import's usual constructor (in particular, the setupExport
method) keep a copy of the remote PIDs.  (They currently get eaten by
Distributor's createFromRecvs method in setupExport.)  I'll leave this
optimization for later.

The setUnion test (tpetra/test/ImportExport/Import_Union.cpp) tests
both that the computed union Import works as expected, and that it
represents the same communication plan as the expected union Import.
It also tests that setUnion is symmetric in its arguments.  We still
need to extend this test to include more interesting Maps, but it's a
good start for now.

With setUnion now working like it should, it's reasonable to start
writing a version of sparse matrix add (for CrsMatrix) that uses local
indices.  I have one in the works.

Build/Test Cases Summary
Enabled Packages: Tpetra, Belos, Ifpack2, Zoltan2, 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=209,notpassed=0 (11.52 min)
3) SERIAL_RELEASE_SS => passed: passed=192,notpassed=0 (15.51 min)
4) MPI_RELEASE_SS => passed: passed=209,notpassed=0 (20.26 min)
MueLu: fixing typo in comment
MueLu: making diffusive option cheaper

User-controllable option on max # of arbitration rounds
Significantly reducing size of vector that is commmunicated.  Was #proc*#partitions, now is #proc*#(partitions for which I have DOFs).
Cleanup done on proc 0.
MueLu: changes to diffusive phase

Clean up phase is now done by all processors, not just proc 0.  This is slightly faster
than gathering to proc 0 and then doing a broadcast.
MueLu:  minor change to scaling test

Now child-pair information can be suppressed with --notimings option.