Kokkos: Fix UnorderedMap capacity-scalability issue.

Use the hash value of key, not the hash table index, to select where
to look for an unused node.
Ifpack: reindexing should be optional in Ifpack_AdditiveScharz

This commit affects only the case when
Ifpack_ENABLE_PARALLEL_SUBDOMAIN_SOLVERS is enabled in the CMake
configuration.

Performing subdomain matrix reindexing in Ifpack_AdditiveSchwarz
only when the number of MPI processes assigned per subdomain is
greater then one (for ex, when using ShyLU). This operation is
potentially useless when dealing with serial subdomain solvers
for AAS, which may have their own option to do reindexing.

Build/Test Cases Summary
Enabled Packages: Ifpack
Enabled all Forward Packages
0) MPI_DEBUG => passed: passed=528,notpassed=0 (13.10 min)
1) SERIAL_RELEASE => passed: passed=496,notpassed=0 (2.49 min)
NOX: Adding new line search based on user limiting of solution elements

Build/Test Cases Summary
Enabled Packages: NOX
Disabled Packages: SEACAS,Sundance,PyTrilinos,Didasko,Stokhos,TrilinosCouplings,MueLu,STK
Enabled all Forward Packages
0) MPI_DEBUG => passed: passed=180,notpassed=0 (35.51 min)
1) SERIAL_RELEASE => passed: passed=180,notpassed=0 (13.01 min)
2) MPI_DEBUG_SS => passed: passed=242,notpassed=0 (25.18 min)
Tpetra:  Port DistObjectKA to KokkosRefactor for MultiVector.

DistObjectKA is the Kokkos "Array" version of DistObject that expects
each client object to permute/pack/unpack directly on the device using
Kokkos::View.  I ported this implementation to the KokkosRefactor
MultiVector by converting it to a partial specialization of DistObject
for the KokkosCompat wrapper node.  Since not all Tpetra classes
implement the new view-based API, the old Teuchos array-based interface
is still there as well, with a virtual member function to determine
which interface to use.  Once all Tpetra objects derived from DistObject
are converted to Kokkos View's, the old one can go away.

I also took the opportunity to rewrite the MultiVector
permute/pack/unpack kernels to work with the 2-D view directly, instead
of reinterpreting it as a 1-D view.  This makes the kernels simpler.

For the time being, the old DistObjectKA is still there, since I and a
few other people use it.  It should go away soon though.
Epetra: Fixing a -Werror issue
Kokkos: Fixing -Werror issues
Tpetra: Fixing -Werror issues
Tpetra: Fixing more -Werror issues
Tpetra: More -Werror issues
Tpetra: Even more -Werror fixes

Build/Test Cases Summary
Enabled Packages: Epetra, KokkosClassic, Tpetra
Enabled all Forward Packages
0) MPI_DEBUG => passed: passed=881,notpassed=0 (74.13 min)
1) SERIAL_RELEASE => passed: passed=811,notpassed=0 (75.70 min)
Other local commits for this build/test group: ee90427, 4c2d6e6, d6ebbc1, a788f02, 3b433f1
Zoltan2: Minor update of doc.
Fixed bug in getLocalEdgeList when run on one process
(i.e., when local == global).
Send error output to both stdout and stderr.
Sending only to stderr does not force the error message to appear in order with
other output.
Tpetra:  Change AbsMaxOp to use ArithTraits

Changed the functor for the ABSMAX combine mode for MultiVector to use
the new ArithTraits (yay!).

However this combine mode seems really strange to me if the magnitude
type is different from the scalar type (e.g., complex).
Fixed bug in getVertexList in GraphModel.
Bug was exposed when vertex weights or coordinates were enabled.
Ugh!
Fixed bugs in GraphModel unit test:
    Inconsistencies between coordinate and weight values.
    Inconsistent handling of removeSelfEdges.
Added output so that when something fails, we can more easily determine why.
Fixed bug in GraphModel unit test.
It counted local edges incorrectly when, in a run with p processes,
the map assigns every p-th row to a process.
Fixed a bug in GraphModel unit test.
Test was wrong when matrix has round-robin GIDs, but consecutive IDs were
requested from the graph model.
Minor clarification
Fixed bug in local graph extraction for GraphModel.
When no local edges existed, all arrays describing the local graph were null,
including the array of offsets from vertices into the edge array.
A better implementation returns an offsets array that contains all zero values.
That is, if a local process has vertices but no edges, there should still be an
offset entry for each vertex.