easier testing
Allow tests to run without numpy

In that case tinynumpy will be used in place of numpy.
We should always have a machine *with* numpy in CI. By
testing against itself we actually test compliance in an
additional way: does the comparison with numpy still work
if tinynumpy is used instead. Very meta :)
improvments to buffer etc.
Merge remote-tracking branch 'almarklein/master'
Fix double index and newaxis bugs, restore test_ndarray.py unittests and add additional test coverage.

1) When creating a offset view of an existing array, the buffer pointer was taken directly from the base array, and the buffer size was calculated using the view's dimensions and stride.  If the view was offset, this would leave the view's buffer too small to index the view's data range.  To fix, the view's base offset is added to its size, to ensure the underlying ctypes array contains the entire view.  An alternate solution would be to offset the pointer stored in self._data, and leave the view's _offset at 0, but this would require updates throughout and I'm not sure whether it has interactions with __array_interface__.

2) When using tinynumpy.newaxis (aka None) in a key, stride was left at 0.  This is okay as long as the size is 1, meaning the stride should never be referenced.  However when the first axis was newaxis, the stride was used to calculate realsize, leading to a 0 sized buffer.  The newaxis code has been updated to calculate the actual stride of the new axis.