Size zero sparse matrices.

This allows sparse matrices to be size zero. Meaning one or both of their shape components is == 0.

This is needed because fancy indexing and other weird edge cases can occasionally return a sparse matrix shaped like this. For example:
```python
In [1]: import numpy as np; import scipy.sparse as sp

In [2]: A = np.asmatrix(np.arange(50).reshape(5,10))

In [3]: Asp = sp.csr_matrix(A)

In [4]: A
Out[4]: 
matrix([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
        [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
        [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]])

In [7]: A[5:5]
Out[7]: matrix([], shape=(0, 10), dtype=int64)

In [8]: Asp[5:5]
Out[8]: 
<0x10 sparse matrix of type '<class 'numpy.int64'>'
	with 0 stored elements in Compressed Sparse Row format>