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.
FIX: Make nditer support ndim == 0 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.
MAINT: Remove np.ndindex 0-d hack.
TST: Add some very basic tests for 0-d iteration

Mostly check that iterator.ndim == 0.
API: Add NPY_ITER_USE_ZERO_OA_NDIM flag to allow forced 0-d shape

nditer had the problem that it was impossible to provide op_axes
or itershape with dimension 0. This means that it was not possible
to force a 0-d iteration or do one without setting op_axes and
itershape to NULL.
Passing the new flag, -1 is used for oa_ndim to signal that no
itershape and op_axes are given. When the flag is set and oa_ndim
is zero, a 0-d iteration is forced.
ENH: Use NPY_ITER_USE_ZERO_OA_NDIM to allow scalar op_axes

This allows forcing the iteration to be 0d when arrays are not
by selecting no axes.
Fixup for nditer_constr.c, the not NULLs should be enforced anyway
Fixup for 0-d iteration support, need to reread baseoffsets

This is during resetting.
Fixup for use of new flag in pywrap, forgot that for nested_iter
Fixup for Tests, this adds tests for nested iters
ENH: Use NPY_ITER_USE_ZERO_OA_NDIM for einsum

This allows for scalar multiplication with einsum, without any
further special casing.
Fixup, use -1 in oa_ndim for simple AdvancedNew constructors
MAINT: Use oa_ndim = -1 for NpyIter_AdvancedNew to signal no axes

None of the iterations actually using oa_ndim support 0, so no
changes are necessary.
DOC: Document changes to the AdvancedNew iterator

This are notes related to flag NPY_ITER_USE_ZERO_OA_NDIM.
FIX: do not actually use some wonky iterflag, but check on op_axes