ENH: properly fix unaligned load of complex types

the workaround of setting the aligned to false unconditionally makes
copying strided complex data extremely slow as it will always do
unaligned elementwise memmoves.
Instead set the alignment requirement for complex types correct in the
dtype to begin with.

Note that on 32 bit gcc complex double will still be aligned to 8 bytes
unless compiled with -malign-double.

It is possible this will introduce new segfaults on architectures
without unaligned loads, but this now indicates a missing alignment
check in the affected code as the array description is correct.
ENH: enable unaligned loads on x86

x86 can handle unaligned load and there is no hand vectorized code in
this file. It would be a serious compiler bug if it adds vectorization
without checking for alignment.
Enables fast complex128 copies which are unaligned on 32 bit gcc unless
compiled with -malign-double.
BUG: fix non-swapping strided copies in GetStridedCopySwap

Fixed PyArray_GetStridedCopySwap{Pair,}Fn returns paths that do not swap
the data.
It never triggered because the alignment requirement for complex data
was too low (4-8 bytes) and always fullfiled by the memory allocator.
As this is now fixed it caused failures on sparc with 16 byte long
doubles.
Merge pull request #3421 from juliantaylor/complex-copy

Poor performance complex strided copies since 1.7