TST: add tests for roll function
FIX: roll raises a ValueError is axis > ndim
FIX: handle empty arrays in roll
First attempt at BF for 2028 and added better tests for scalarmath pow function
fixed some style problems
STY: drop some else clauses in roll
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
BUG: Do not reuse nditer buffers when not filled enough.

This checks if the previous time around, the buffers were filled
with as much data as they would be filled this time around. Since
This is difficult for the initial loop before reusing is activated
because in that case the buffer may be larger then just the
first outer reduce dimension. In that case do not allow reuse
unless the index along that dimension was 0.
When the inner reduce index is not 0, then also the reusing of
the buffer is dangerous.
TST: Add (slow) nditer reduce buffer reuse test
BUG: no buffer reuse in nditer, if there was no buffer previously

If the buffer is used or not can possible change during iteration.
In this case, the buffer cannot be reused if it never existed...
TST: test no reuse of non-existing buffers in nditer

This slightly changes the test to cover more cases including
the one where buffers are sometimes used and sometimes not.
2to3: Use absolute imports.

The new import `absolute_import` is added the `from __future__ import`
statement and The 2to3 `import` fixer is run to make the imports
compatible. There are several things that need to be dealt with to make
this work.

1) Files meant to be run as scripts run in a different environment than
files imported as part of a package, and so changes to those files need
to be skipped. The affected script files are:

    * all setup.py files
    * numpy/core/code_generators/generate_umath.py
    * numpy/core/code_generators/generate_numpy_api.py
    * numpy/core/code_generators/generate_ufunc_api.py

2) Some imported modules are not available as they are created during
the build process and consequently 2to3 is unable to handle them
correctly. Files that import those modules need a bit of extra work.
The affected files are:

    * core/__init__.py,
    * core/numeric.py,
    * core/_internal.py,
    * core/arrayprint.py,
    * core/fromnumeric.py,
    * numpy/__init__.py,
    * lib/npyio.py,
    * lib/function_base.py,
    * fft/fftpack.py,
    * random/__init__.py

Closes #3172
2to3: Add `from __future__ import ...` to new files.

The new files that came in when doc/sphinxext/numpydoc was restructured
as a package with test stubs did not have `from __future__ import ...`.
This fixes that omission.