[TriBits] remove duplicates from header and sources lists

Many Trilinos libraries include certain header and source files more than
once. As a consequence, some files are installed more than once. While this
is not a huge problem per se, it hides the overrides that are a problem.
See bug #6186.

This commit just removes the duplicate entries of the HEADERS and SOURCES
lists for TRIBITS_ADD_LIBRARY(). The duplicate installation count goes down
from 62 to 30 with this.
adding mesh adapter to coordinate model
Tpetra: CrsMatrix: Added debugging code to catch deep_copy issue
KokkosClassic: Added more helpful documentation to CMake option
Tpetra: CrsMatrix: Revised debug checks for Kokkos refactor.

The debug checks now test invariants of the underlying new Kokkos data
structures; they no longer check the classic Kokkos data structures.
Xpetra: Made CrsMatrix unit test more thorough, to catch a possible bug.

There is some issue, apparently related to
Tpetra::CrsMatrix::replaceLocalValues, that causes this Xpetra test
and one MueLu test (Maxwell 3-D) to fail.  I have enhanced the Xpetra
test in an attempt to find the source of the bug.  replaceLocalValues
appears to work fine, until we try to do a mat-vec.  I'm not sure
what's going on.  Note that the test FAILS with Kokkos refactor
Tpetra, but does not fail with "classic" Tpetra (currently the
default).
Tpetra: Ported Zoltan2 RCB Epetra/Tpetra/Zoltan comparison to Tpetra.

The following test in Zoltan2:

Trilinos/packages/zoltan2/test/temp/multivectorTest.cpp

compares the performance of Epetra, Tpetra, and Zoltan(1) data
migration, for a use case resembling what recursive coordinate
bisection might do.  That test was crashing with the Kokkos refactor
version of Tpetra.  Thus, I ported just the Tpetra parts of the test
to Tpetra.  I then found out that the Zoltan2 test was using
Tpetra::MultiVector incorrectly.

In a debug build (with Teuchos_ENABLE_DEBUG ON), Teuchos::RCP catches
a dangling reference.  This is because the code calls
Tpetra::MultiVector::getData(j), which returns an
Teuchos::ArrayRCP<const Scalar>, but then keeps a nonowning view (as a
Teuchos::ArrayView<const Scalar>) of that ArrayRCP.  This is illegal,
because the ArrayRCP has fallen out of scope.

The only way one would see erroneous behavior in this case is if Node
= KokkosClassic::ThrustGPUNode.  In that case, the returned ArrayRCP
is a host allocation ("generalized host view of GPU device data") and
would actually be freed when the ArrayRCP's reference count goes to
zero.  This case could also break the Kokkos refactor Nodes that have
separate memory spaces (currently only the CUDA wrapper Node).

I fixed this issue in the Tpetra port of the RCB test, and it runs
without crashing or throwing an exception.  The fix actually makes the
code simpler and easier to understand.  Thus, I would recommend
porting the fix to Zoltan2.  I will do it myself as soon as I get the
chance.

I also took the chance to clean up some of the nonidiomatic use of
Teuchos::Time and other Teuchos classes.  This clean-up should also be
ported back to the Zoltan2 test.
Tpetra: MultiVector (Kokkos ref): Fixed deep_copy & added error checks

This commit only affects the implementation of the Kokkos refactor
version of MultiVector.

I fixed some semantic issues with deep_copy for MultiVector.  First,
it now no longer requires UVM to work with CUDA, because it does
sequential fill of whichVectors on the host and uses Kokkos::DualView
to push them to the device (if necessary).  Second, it now correctly
syncs between host and device for the destination MultiVector.

I also added error checks to MultiVector that are more appropriate for
the Kokkos refactor version.
Zoltan2: Fixed Tpetra::MultiVector test.

See my recent commit to Tpetra.  This Zoltan2 performance test was
using Tpetra::MultiVector incorrectly.  A debug build (with
Teuchos_ENABLE_DEBUG ON) was catching the issue, as a dangling
ArrayRCP reference.  The test was getting a Teuchos::ArrayRCP view of
the MultiVector (via getData(j)), storing a nonowning view (as
Teuchos::ArrayView), and throwing away with Teuchos::ArrayRCP.  This
breaks ArrayRCP semantics.  It is also incorrect for Node =
KokkosClassic::ThrustGPUNode, since for that Node, getData returns a
temporary host view that is deallocated when the ArrayRCP goes away.
I fixed the test, by porting the version of the test that I added
recently to Tpetra, back to Zoltan2.

Build/Test Cases Summary
Enabled Packages: KokkosCore, KokkosCompat, KokkosContainers, KokkosLinAlg, KokkosMpiComm, Tpetra, Ifpack2, Belos, Amesos2, Xpetra, Zoltan2, 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 => FAILED: passed=304,notpassed=2 => Not ready to push! (11.22 min)
3) SERIAL_RELEASE_SS => FAILED: passed=250,notpassed=2 => Not ready to push! (1.37 min)
4) MPI_DEBUG_KOKKOS_REFACTOR => FAILED: passed=311,notpassed=4 => Not ready to push! (11.99 min)
5) MPI_RELEASE_KOKKOS_REFACTOR => FAILED: passed=302,notpassed=4 => Not ready to push! (6.61 min)
Other local commits for this build/test group: 3292bfe, 9f61c22, 97fd24e, 2cda119, f3ef394, 31f6441
WARNING: Forced the push!
adding mesh adapter to coordinate model.
Sacado:  Use UVM for allocating DFad derivative array for CUDA.

When Sacado is enabled to use Kokkos and CUDA, now use UVM for
allocating dynamic derivative array for DFad.  This allows DFad types to
be used directly for CUDA withoug putting them inside a view.  For this
to work though, the code needs to be compiled by NVCC.
Sacado:  Add deep_copy( FadType, FadType::value_type ) overload.
Sacado:  Fix FadType::operator=(Expr<>) for ViewFad.

The expression assignment operator was using the input expression size
for looping over the derivative array, instead of its own.  Normally
these are the same after a resize, by ViewFad can't resize its
derivative array.  The only valid use case is when assigning to a
ViewFad a FadType with zero length derivative array, and this makes sure
the derivative array of the ViewFad is in fact zeroed out.
Sacado:  Add deep_copy() unit tests for Fad and OpenMP tests.
Tpetra: MatrixMarket: Fixed minor syntax bug in untested helper fn.
Tpetra: Ported Xpetra CrsMatrix,Tpetra_ReplaceLocalValues test.

The Xpetra CrsMatrix, Tpetra_ReplaceLocalValues test fails with the
Kokkos refactor version of Tpetra.  In order to figure out whether
this is a Tpetra or Xpetra issue, I ported the test to Tpetra (e.g.,
by replacing "Xpetra::" with "Tpetra::", and using constructors
directly instead of through factories).  It still fails in Tpetra, so
we can focus on fixing Tpetra first.

The test also now verifies that apply() works when the matrix is
initially constructed as the identity matrix.  The issue is that the
resumeFill and modification doesn't work.

NOTE: This test currently FAILS with the Kokkos refactor version of
Tpetra.  It should pass with the "classic" version of Tpetra.

Build/Test Cases Summary
Enabled Packages: KokkosCore, KokkosCompat, KokkosContainers, KokkosLinAlg, KokkosMpiComm, Tpetra
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 => FAILED: passed=74,notpassed=2 => Not ready to push! (2.50 min)
3) SERIAL_RELEASE_SS => FAILED: passed=53,notpassed=2 => Not ready to push! (0.94 min)
4) MPI_DEBUG_KOKKOS_REFACTOR => FAILED: passed=83,notpassed=2 => Not ready to push! (3.13 min)
5) MPI_RELEASE_KOKKOS_REFACTOR => FAILED: passed=74,notpassed=2 => Not ready to push! (2.29 min)
Other local commits for this build/test group: da68677
WARNING: Forced the push!
Stokhos:  Add scalar block-left and block-right mat-vec performance.
Stokhos:  Fix copy-paste error in mean-based multiply test.
Ifpack2: Doc change only. Explain that Restricted Additive Schwarz (RAS)
is supported by setting CombineMode to Zero.
Tpetra::Experimental::BlockCrsMatrix: Added note on ETI / test types.

Travis Fisher would like to add a block Gauss-Seidel implementation to
Tpetra::Experimental::BlockCrsMatrix.  This requires that
Teuchos::LAPACK (or some wrapper thereof) have a working
implementation for all Scalar types for which we want to instantiate
BlockCrsMatrix.  This commit ensures that we only do ETI (explicit
template instantiation) and only run tests for floating-point Scalar
types.  It also adds comments to both the ETI and tests for
BlockCrsMatrix that explain what macro to use to do the instantiation.

Build/Test Cases Summary
Enabled Packages: KokkosCore, KokkosCompat, KokkosContainers, KokkosLinAlg, KokkosMpiComm, Tpetra
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 => FAILED: passed=73,notpassed=3 => Not ready to push! (1.60 min)
3) SERIAL_RELEASE_SS => FAILED: passed=53,notpassed=2 => Not ready to push! (0.06 min)
4) MPI_DEBUG_KOKKOS_REFACTOR => FAILED: passed=82,notpassed=3 => Not ready to push! (2.00 min)
5) MPI_RELEASE_KOKKOS_REFACTOR => FAILED: passed=74,notpassed=2 => Not ready to push! (4.88 min)
WARNING: Forced the push!