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

Currently Scipy's sparse matrices are limited to `nnz < 2**31`, and crashes and other unspecified behavior occurs if `nnz` becomes larger so that the `int32` indices start to wrap around.

This PR enables sparse matrices to use either int32 or int64 as the data type of
the indices. The data type is chosen automatically based on the `nnz` of the data
and requirements of the different sparse matrix types.

The threshold selection is written so that it can be monkeypatched to be lower
for testing purposes. The 64-bit specific test suite however currently only consists
of running the existing tests with lower thresholds and randomly assigned index
array data types (these tests pass).

The direct linear algebra (superlu, probably also umfpack) do not work with int64 indices, but implementing that is out of scope for this PR. For matrices with `nnz < 2**31`, things should be backwards compatible.

However, more tests would be needed, so this PR is still a bit in a WIP state.
Some help would be appreciated:

    Write tests / audit the code checking that the data type selection
    works appropriately when needed e.g. in assignment etc.

Closes [Trac #1307](http://projects.scipy.org/scipy/ticket/1307)