MAINT: use custom templating instead of fused types in _csparsetools

Cython (as of 0.20.1) fused types have issues: (i) unnecessary code generation, (ii) bugs in type dispatch.
The issues seem to crop up if a function signature has two fused-types arrays of the same fused type.

Since we can't postpone 0.14.0 to wait for Cython fixes, this PR converts `_csparsetools` (where the issues appear) to use custom templating rather than fused types dispatch.

Fixes gh-3461

Cython discussions:
http://permalink.gmane.org/gmane.comp.python.cython.devel/15250
http://permalink.gmane.org/gmane.comp.python.cython.devel/15245