MAINT: mark SWIG-generated files as binary
ENH: sparse: enable sparsetools to support long long indices

Thanks to peb for the patch.
ENH: sparse: replace intc index type by automatically determined
MAINT: sparse: add a generate_sparsetools.py
TST: sparse: add initial tests for 64-bit indices
BUG: sparse: trigger 64-bit index cast in more locations
BUG: sparse: play safe and do 64-bit cast earlier
BUG: sparse: swap long long -> int64 & int -> int32 in sparsetools

This ensures things keep working as expected also on platforms
with sizeof(int) != 32 and sizeof(long long) != 64
GEN: sparse: regenerate sparsetools files
BUG: sparse: matrix multiply pass 1 must allow for fill-in

Since we don't know the resulting fill-in from the matrix
multiplication, choose a large enough data type to accommodate also a
dense result. If the result nnz proves to be smaller, the data type is
reduced afterward.
BUG: sparse: fix one missing index type determination
BUG: sparse: fix sparse.randn to select index type properly
BUG: sparse: select correct index type on empty matrix init for BSR/CSR/CSC
BUG: sparse: correct index data type in bmat
BUG: sparse: fix BSR to COO conversion on 32-bit
TST: sparse: enable more 64-bit index tests
BUG: sparse: be more fussy about 64-bit index data types

- never downcast
- rename nnz to maxval in get_index_dtype
- CSR maxval=max(nnz, shape[1])
- CSC maxval=max(nnz, shape[0]),
- COO maxval=max(shape)
- DIA maxval=max(shape),
- BSR maxval=max(bnnz, bshape[1])
BUG: sparse: fix 64-bit index handling in _cs_matrix._insert_many
Merge pull request #442 from pv/ticket/1307

ENH: sparse: enable 64-bit index arrays & nnz > 2**31