BUG: check alignment of strides for byteswap

closes gh-4774
BLD: add a simple python file to build cpucaps.dll

using scons seems to fail with wine 1.6, but one only needs to run three
commands so its simpler to just put these into a script instead of
trying to debug scons.
Merge pull request #4777 from juliantaylor/byteswap-align

BUG: check alignment of strides for byteswap
Merge pull request #4781 from juliantaylor/cpucaps-build

BLD: add a simple python file to build cpucaps.dll
BUG: fix where not filling string types properly

the copyswap part of where used the input arrays descriptions to copy
into the destination so if they had a smaller size the destination was
not properly padded with zeros.
Closes gh-4778
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 #4782 from juliantaylor/where-string-fix

BUG: fix where not filling string types properly
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`