BUG/TST: sparse.linalg: exact arg on expm

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.