Merge branch 'karlrupp/fix-mpiaij-prealloc'

* karlrupp/fix-mpiaij-prealloc:
  MPI-mat-preallocation: Removed redundant checks for MPI{S|B| }AIJ-matrices in light of recent MAT_NEW_NONZERO_ALLOCATION_ERR fixes.
  MPIAJI-preallocation: Fixed problems with MAT_NEW_NONZERO_ALLOCATION_ERR for GPUs.
segbuffer: fix bug in which seg->used was not reset

The fast path of PetscSegBufferExtractInPlace() was not resetting seg->used.
segbuffer: add PetscSegBufferGetSize() and PetscSegBufferUnuse()

* PetscSegBufferGetSize: the total size is usually needed for other purposes,
  but it's known by the segbuffer so we may as well make it available in case
  the caller isn't counting themselves.

* PetscSegBufferUnuse: if the caller is trying to amortize access, they might
  get more space than they actually need. This allows them to return that space.
segbuffer: create wrapper structure

The old structure exposed the linked list property of the implementation.
Now we have a simple wrapper structure so that implementation detail is
not leaked. This will also make it possible to implement some thread-safe
operations.
segbuffer: add PetscSegBufferGetInts() to encourage use of PETSC_RESTRICT
MatMatMult_SeqAIJ_SeqAIJ_Sort: new implementation using char flags and sorting

The char 'seen' array is significantly faster than PetscBT, due to the
cost of bit manipulation. Since the index space is very manageable in
size, the char array is better.

In my tests so far, this implemenation is between 10 and 50% faster than
the default.
Merge branch 'jed/matmatmult-sort' into next

* jed/matmatmult-sort:
  MatMatMult_SeqAIJ_SeqAIJ_Sort: new implementation using char flags and sorting
  segbuffer: add PetscSegBufferGetInts() to encourage use of PETSC_RESTRICT
  segbuffer: create wrapper structure
  segbuffer: add PetscSegBufferGetSize() and PetscSegBufferUnuse()
  segbuffer: fix bug in which seg->used was not reset
CMake-CUDA: Updated timeout for CMake boot to 300 seconds
Merge branch 'karlrupp/cmake-cuda-builds' into next