API: Make nditer support ndim == 0 for 0-d iterations.

There are relatively few changes necessare here. However there is a
conceptionally there are no axes for the 0-d case, and no axesdata
needs to be used. This still uses the first axisdata. Which means that
in a few places ndim == 0 is special cased or special cased to act like
ndim == 1.
It would probably be a little cleaner to to use the base pointers directly
in the 0-d case and no axes iteration at all. That would require similar
special cases though.

This also makes oa_ndim == -1 the "correct" way to signal that no op_axes
are given with oa_ndim == 0 being, for the time being, dual use. Either
meaning that nothing may be given, or if something something was given
enforcing a 0-d iteration.

The necessary changes to the ufunc machinery are also done.

Documented that the dtype transfer functions do not handle the scalar
case unless even shape is set.
ENH: Allow np.nditer to support scalar op_axes

Also uses oa_ndim == -1 to signal no op_axes were given. This is slightly
cleaner inside pywrap itself and is a cleaner signal for the iterator.
TST: Add basic tests for 0-d np.nditer/np.nested_iter support
TST: Add test that einsum multiplies scalars fine
MAINT: Remove np.ndindex 0-d hack.
DOC: Add documentation clarifying the use of oa_ndim
DOC: mention AdvancedNew iterator change in the release notes.
MAINT: Remove 0-d iterator special case from ufunc_object.c
Merge pull request #3104 from seberg/nditer-allow-0d

Make AdvancedNew iter more 0-d aware