Add a Spike::GPU implementation of BiCGStab.

- this is a slight modification of the CUSP bicgstab function, to allow better use of the Spike::GPU monitor class.
- the original CUSP BiCGStab solver is still available as an option.
- like the original CUSP solver, this BiCGStab solver is slightly more efficient than the specialization of BiCGStab(L) for L=1.
Use cusp::array1d for local arrays in bicgstabl() and minres().

This allows using these templated functions with an array view as the Vector template parameter.
Modify the monitor class for better support of solver-specific termination.

- obsolete the monitor state; instead use a code (positive: success, negative: failure, 0: continue iterations)
- provide access to termination code and a corresponding message
- modify solvers to stop iterations based on solver-specific criteria
Intercept two more possible division by zero cases.
Merge branch 'feature/bicgstab' into develop