Tpetra::DistObject: Expose nonblocking versions of doExport & doImport
Created by: mhoemmen
Expose nonblocking versions of doExport and doImport in Tpetra::DistObject. These comprise Tpetra's public interface for data redistribution, so this would expose nonblocking redistribution to users.
Tpetra uses the DistObject methods doImport and doExport, called on MultiVector objects, to handle communication for sparse matrix-vector multiplication. Some preconditioners, such as those in Ifpack2, may also do so in their apply() methods. Thus, if we want to overlap communication and computation, the best place to start is by making doImport and doExport nonblocking.
In an interface sense, this is independent of #383. However, best performance benefits would come from fixing #383 first.