ENH: sparse: trim down _csparsetools

* Moved some non-looping, non-typeable code to Python.
* Merged three insertion routines, one templated, into one.
  The old single-value insert was converting to the right type,
  type checking, looking up a specialized routine through a dict,
  then casting back to object to do the actual work.
  The batch version skipped the dict lookup but otherwise did the
  same.
* Wrap-around and boundschecking turned off where appropriate.
* Various micro-optimizations.

                                  Old     New
Generated C LOC:                 45664   34220
.so file (MB):                    2.41    1.60
Compile time (wallclock, s):    10.667   7.781