ENH: use copyswap instead of memmove for flat assignment

improves d.flat = x performance by about 35% for basic types as the
copyswap functions have known elementsizes and these are implemented
optimally by the compiler while for the generic call the compiler needs
to call out to libc.
Merge pull request #4783 from juliantaylor/flat-assign-improve

ENH: use copyswap instead of memmove for flat assignment
BUG: Avoid double iterator deallocation in `ufunc_object.c`

In `PyUFunc_GeneralizedFunction`, whenever a call to
`NpyIter_GetIterNext` fails, `NpyIter_Deallocate` is called twice, one
right after the error check, the second in the `goto fail`. Removed
the first one.
Merge pull request #4784 from jaimefrio/iter-dealloc-gufunc

BUG: Avoid double iterator deallocation in `ufunc_object.c`