Mat: Update to Elemental revision 0.81
Removing TXPETSCGPU from CUSP matrix and preconditioner classes

The default type of the matrix in Mat_SeqAIJCUSP struct is set
to a void *. Then it is cast to a particular cusp matrix type
(csr, ell, dia) depending on the chosen format by the user with
csr being default. This need to propagate into the the cusp
preconditioner classes.

A stream variable was added to the Mat_SeqAIJCUSP struct. This
is allocated and deleted by the mpiaijcusp class--in serial
the stream variable is set to 0. Ultimately, the CUSP API will
need to support streams in order to get an efficient multi-GPU
SpMV. This code for allocating, setting, deleting streams is
added so that once the CUSP API is enhanced to accept streams,
the interface will work naturally.
Removing unused enumerated parapeters from MatCUSP/CUSPARSEFormatOperation

I remove MAT_CUSP_SOLVE from MatCUSPFormatOperation
and MAT_CUSPARSE_SOLVE from MatCUSPARSEFormatOperation as
potential parameters for choosing the storage of the matrix
for tirangular solve. In particular, the triangular
solves was always using csr format so this parameter had
no effect. Moreover, I never found a case where
an ellpack/hybrid format worked better. Thus I remove this
as a potential parameter. However, I think it is important
to keep MatCUSP/CUSPARSEFormatOperation in the code. In the
future I can see a MAT_CUSPARSE_FACTOR option which uses
CUSPARSE to do ilu0/ic0 factorization on the GPU.
Removing TXPETSCGPU from the build system.

Removing the main file and a few other places where
--download-txpetscgpu was used. I think I got them all.
Fix to aijcusparse for ell/hyb matrices in Multi-GPU MatMult

The parameters of the matrix (i.e. the number of rows) were not being
set correctly in a parallel (Multi-GPU) MatMult for Ell/Hyb matrix
storage formats. In particular, the offdiagonal component matrix used in
MatMultAdd had the number of rows set incorrectly. The existing test,
src/ksp/ksp/examples/tests/ex43 (runex43_5) only set the diagonal
component to be in non-csr format so this wasn't caught earlier. D'oh.
I have checked all combinations of storage formats on
ksp/ksp/examples/tutorials/ex2.c. Results are entirely consistent in
serial and parallel and are tested on CUDA 5.0(2070, Fermi) and
CUDA 4.2 (1060, Tesla) architectures.
implement MatGetRedundantMatrix_MPIAIJ_interlaced() to simplify and replace MatGetRedundantMatrix_MPIAIJ
add 'type' to struct _n_PetscSubcomm
rm mlocal_red from MatGetRedundantMatrix()
set defaults in PetscSubcommCreate()
rm container from MatGetRedundantMatrix_MPIAIJ()
make src/mat/examples/tests/ex9.c as a test for MatGetRedundantMatrix()
MatGetRedundantMatrix_MPIAIJ_interlaced() should work for non-square matrix
optimize PCApply_Redundant() in the case !useparallelmat
cleanup PCSetUp_Redundant()
cleanup PCSetUp_Redundant(); add tests for PCRedundant
bugfix
add PetscSubcommView()
add small comment
implement MatGetRedundantMatrix for psubcomm_type CONTIGUOUS; rename MatGetRedundantMatrix_MPIAIJ_interlaced to MatGetRedundantMatrix_MPIAIJ_psubcomm
add PetscSubcommSetFromOptions(); PCRedundant can swith to PETSC_SUBCOMM_CONTIGUOUS at runtime
cleanup