sliced_ell_matrix: Support for Sliced ELL-matrix format (sliced_ell_matrix).

This format is an improved version of the ELL format,
aiming at maximized memory bandwidth for reading matrix values.
Currently only matrix-vector products are supported, no
sparse-matrix-by-dense-matrix products. To be added at some later time.
See paper
"A unified sparse matrix data format for efficient general sparse matrix-vector multiply on modern processors with wide SIMD units"
by Kreutzer et al. for details. We don't use any sorting of rows here.
CUDA: Added option for specifying the CUDA arch through CMake.

So far "-arch=sm_13" was hardcoded. Now the user can overwrite this
through the CUDA_ARCH_FLAG in CMake.
Merge branch 'wip-sliced-ell-matrix'.

wip-sliced-ell-matrix: Support for Sliced ELL-matrix format.
Currently only matrix-vector products, but no
sparse-matrix-times-dense-matrix-products.
Pipelined CG: Added implementation for host-based execution.

Implementation for OpenCL and CUDA to come.
Reference for the implementation: Algorithm 2.2 in
Chronopoulos and Gear:
"s-step Iterative Methods for Symmetric Linear Systems",
Journal of Comp. and Appl. Math, 1989.