Updated test suite based on pull request comments.
Updated code using ravel() and now able to set values based on an array. A
tradeoff has to be made between code duplication and memory usage. Making
everything into the same shape would be the most elegant, but A[:, :] = 1
would generate three arrays (i, j, x) all having the same size as A. If there
is desire to simplify the code, that can be easily done.
Rewrote __getitem__ to be more readable and reduce code duplication.
Copied code from __getitem__ to __setitem__ . This fixes one error in
test_base and brings up a new error:

line 1172
A[1:3, 1] = [[10], [20]]
now works

line 984
A[1:5, 0] = range(1, 5)
is now broken

line 984 does not work for NumPy matrix objects, so I think that test should
be deleted. I'm leaving that alone for now.