Modify the SPMV functor class to be a cusp::linear_operator.

This allows Spike::GPU to directly use the Cusp Krylov solvers, while allowing a user-defined SPMV operator.
Allow using one of 4 Cusp Krylov solvers and one of 2 Spike-defined solvers.

Currently supported Cusp Krylov solvers: BiCGStab, GMRES, CG, and CR.
Spike::GPU Krylov solvers: BiCGStab(1) and BiCGStab(2).
Modify the operator() to skip any copying if no preconditioning is used.

This operator is a wrapper around the preconditioner solve function.
It is invoked from a Krylov solver through Cusp's multiply() algorithm.
Modify Spike::GPU's BiCGStab(L) Krylov solver to match the specification of the Cusp Krylov solvers.
Remove custom implementation of CG -- now directly using the cg solver from Cusp.
Update all example drivers to match changes to Spike::GPU solver and preconditioner.

This includes changes to the available Krylov solvers and to the specification of the SPMV functor class.