Piro: Improved Provider documentation
Piro: Documented Epetra and Thyra solver factories
Piro: Reworked main page of documentation
Piro: Added modules hierarchy in documentation
Piro: Linked modules from main page of documentation
Piro: Removed file-level documentation

The documentation for the free functions defined in the corresponding
files remain accessible as members of modules and namespaces.
Both approaches reflect the logical structure of the Piro package and
therefore are more appropriate than a file-based documentation.
MueLu: Reuse: driver cleanup
MueLu: Reuse: cleaned up xml and updated cmake to make a copy
MueLu: RAPFactory: minor cleanup
MueLu: Emin: cleanup
MueLu: added custom binary reader and converter

Reading matrices in ASCII MatrixMarket format is painful and slow
process. I've added an alpha version of custom binary reader and
converter. The format is very simple:
nrows, ncols, nnz
rowid, rownnz, rowindices, rowvalues
MueLu: Reuse: removed unnecessary stuff from the xml deck
MueLu: fixed interplay between debugging cycles and reuse

A very useful feature for debugging factory dependency cycles is the
test whether a factory's Build method has been called twice. However, in
the reuse case this is an expected behaviour. This patch adds infrastructure
in place to easily switch between two modes.
MueLu: Reuse: minor cleanup in output for the driver
MueLu: Utils: added missing header
Tpetra: CrsGraph: Avoid recomputing local constants every fillComplete.

If a CrsMatrix has a nonconst CrsGraph, then the CrsMatrix's
fillComplete will invoke the CrsGraph's fillComplete, even if the
structure of the graph hasn't changed.  CrsGraph's fillComplete always
calls computeGlobalConstants.  That method in turn always recomputes
"local constants" (like the local number of diagonal entries), before
it uses all-reduces to compute "global constants" (like the global
total number of diagonal entries).  We can't avoid at least one
all-reduce, because we have to know if any process' graph's structure
has changed.  However, we can avoid recomputation of local constants
by keeping track of whether the graph's structure has changed since
the last time local constants were computed.  Computing local
constants requires iterating over all the local data (to count
diagonal elements and check for lower and upper triangularity, for
example), so it would be worthwhile to avoid this cost if the graph's
structure has not changed.

This commit adds this optimization.  It adds a Boolean field
haveLocalConstants_ to CrsGraph.  Any method that changes the
structure of the matrix sets this to false, just like it sets the
"indices are sorted" and "indices are nonredundant" fields
(conservatively) to false.

The commit also replaces the setSorted and setMerged methods of
CrsGraph with a single setLocallyModified method.  The name makes the
meaning of the method more clear.

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=173,notpassed=0 (9.14 min)
3) SERIAL_RELEASE_SS => passed: passed=157,notpassed=0 (11.59 min)
Tpetra: CrsGraph: Improved documentation of private methods.
Tpetra: CrsGraph: Improved exception message for an unimpl'd case.
Tpetra: CrsMatrix: Avoided ArrayView op= in getView(NonConst).

getView and getViewNonConst are private methods that return a view of
the entries in a given row.  They may be called frequently, so it is
important to optimize them.  I noticed that both methods were
initially creating an empty ArrayView, assigning a nonempty ArrayView
to it, and then returning the result.  This commit eliminates the
unnecessary assignment for the common cases in which the row is not
empty.
Kokkos: CUSPARSEOps: Fixed minor compile errors I introduced earlier.

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=173,notpassed=0 (11.25 min)
3) SERIAL_RELEASE_SS => passed: passed=157,notpassed=0 (10.49 min)
Other local commits for this build/test group: c227cf0, 481df5d, 1cc74f9