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.
CG: Added improved kernels for OpenCL when using compressed_matrix<>

Support for other sparse matrices to be added later.
CG: Completed implementation of improved (pipelined) OpenCL kernels.
CG: Added CUDA kernels. Pipelined CG now complete.
Merge branch 'karlrupp/feature-pipelined-cg'

karlrupp/feature-pipelined-cg:
Improvements of the conjugate gradient algorithm by using custom kernels
for full use of pipelining and avoiding kernel launch overheads to the extent
possible.
Follows algorithm 2.2 in the paper by Chronopoulos and Gear:
"s-step Iterative Methods for Symmetric Linear Systems",
J. Comp. and Appl. Math 25 (1989).