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.
Merge pull request #3186 from seberg/backport-issue-3142

Backport nditer buffer reuse fixes