BiCGStab: Added pipelined implementation for compressed_matrix with host-based backend.

Implementation based on the BiCGStab listed in the book by Saad and
then optimized for minimum memory traffic and synchronization points
similar to the paper by Jacques et al.
BiCGStab: Completed implementation of host-based backend.
BiCGStab: Added OpenCL implementation of pipelined kernels.
BiCGStab: Added pipelined CUDA kernels. CUDA implementation now complete.
BiCGStab: Applied const-correctness in OpenCL and CUDA kernels.

Some missing const qualifiers in the OpenCL kernels resulted in an almost
4x-performance drop. With equal const qualifiers, performance is now within
a roughly ten percent margin.
Merge branch 'karlrupp/feature-pipelined-bicgstab'

karlrupp/feature-pipelined-bicgstab:
Implements a pipelined version of BiCGStab with substantially improved
performance especially for smaller matrices. The algorithm is a slightly
rearranged version of BiCGStab as given in the book by Y. Saad
and only requires a single host<->device transfer in each step.
A fairly similar algorithm has been proposed in the paper
Jacques et al, "Electromagnetic scattering with the boundary integral
method on MIMD systems", LNCS 1593, Springer, 1999.