BUG/TST: sparse.linalg: test expm exact and inexact algorithms

Code previously failed on sparse matrices.
ENH: sparse.linalg: implement matvec as matmat and vice versa

Also improved the subclassing documentation and put in some input
validation.
DOC: sparse: intro + example for LinearOperator interface