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: fix issue with distutils.exec_command introduced in 1.7.0.

Closes gh-2999 and gh-2915.

There are several packages (nose, scipy.weave.inline, Sage inline Fortran) that
replace stdout, in which case it doesn't have a fileno method.  This method was
attempted to be used (change in gh-2766 to fix a py3k issue).
FIX: add _supports_fileno() for testing fileno()

The new _supports_fileno() function works in all versions of Python.
The problem was that in Python 2.x, the fileno() method of StringIO() is
missing, while in Python 3.x, it is present, but raises an exception.
PEP8: don't use \
TST: add robust tests for exec_command()

First, we test both stdout and stderr.

Second, we now test both _exec_command_posix() and _exec_command(), see
numpy/distutils/exec_command.py. This reveals a bug in the implementation which
will be fixed in the next commit. For now the failing test is commented out so
that all tests still pass.
Implement separate checking for stdout and stderr

And enable a test for this that was failing before.
TST: Redirect the other stream to temp. file

Now things behave the same if executed with either of:

nosetests
nosetests -s
TST: skip general test on non-posix platforms

Add a comment explaining the issue.
TST: test_umath: fix wrong indent in test_fast_power

Also, use assert_ instead of assert
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.