FIX: Make nditer work for 0-d iterations.

There are relatively few changes necessare here. However there is a
conceptionally cleaner fix by not using axisdata at all. This fills one
of the axisdata slots even though ndim=0, so that it holds pointers
to the data, shape, etc. With some modifications to the buffering code
and some more/other special cases elsewhere this could probably be fully
dropped.

The dtype transfer functions in lowlevel_strided_loops did not support
ndim=0 as well, so a check is added there. This check should not be necessary
as such here, since the shape, etc. should be reasonably filled, however
the function should probably support the 0-d case anyway.
TST: Add some more basic tests for 0-d iteration support.
BUG: initialize op_axes when only itershape is given

In this case, the initialization used the number of dimensions instead
of setting it to NULL for each operand, leading to possible segmentation
faults.
MAINT: Remove np.ndindex 0-d hack.