ENH: vectorize boolean logical &&, ||, abs and not

The code ensures the result is identical to a boolean operation even
though this might be unnecessary if bools are used correctly everywhere.
The overhead doesn't matter much as vectorizing single byte operations
hits the memory bandwidth limit very quickly.

Improves performance by about a factor of 5 to 10 depending on the cpu.
These operations currently can't be autovectorized by gcc 4.8.
MAINT: ma: clean up ma/test_extras.py: don't use 'import *'; PEP8 whitespace
BUG: ma: ma.average didn't handle complex arrays correctly (issue gh-2684)
Merge pull request #3440 from WarrenWeckesser/bug-ma-average

BUG: ma: ma.average didn't handle complex arrays correctly (issue gh-2684)
BUG: Revert "ENH: enable unaligned loads on x86"

This reverts commit aef286debfd11a62f1c337dea55624cee7fd4d9e.
x86 platform works with unaligned access but the compiler is allowed to assume
all data is aligned to its size by the C standard. This means it can vectorize
instructions peeling only by the size of the type, if the data is not aligned
to this size one ends up with data not correctly aligned for SSE instructions
(16 byte).
So this flag can only be enabled if autovectorization is disabled.
Merge pull request #3445 from juliantaylor/revert-x86-unaligned-access

BUG: Revert "ENH: enable unaligned loads on x86"
BUG: field assignment in masked array did not reset mask; closes #2403

The previous behavior when setting a field after indexing to
select an element was suitable for the hard mask case, but
not for the default soft mask.  In addition, the _hardmask
value was not being set at all in the mvoid instance.  With
this changeset, the _hardmask is passed in and __setitem__
takes it into account.
MAINT: fix compilation issue gh-3443.
Merge PR-3444 from 'jmozmoz:master' into master.

https://github.com/numpy/numpy/pull/3444
Fixed compilation with Cygwin.
Merge pull request #3449 from efiring/mvoid_setitem

BUG: field assignment in masked array did not reset mask; closes #2403
Merge pull request #3436 from juliantaylor/vectorize-bool

ENH: vectorize boolean logical &&, ||, abs and not
Call to byte_swap_vector should use dst, not d1, because this is
modified by the call to the strided memcpy and will end up pointing
after the end of the destination buffer in that case.
BUG: np.ma.compress treated inputs in wrong order; closes #2495
BUG: add __len__ method to ma.mvoid; closes #576
Merge pull request #3447 from efiring/ma_mvoid_len

BUG: add __len__ method to ma.mvoid; closes #576
Merge pull request #3448 from efiring/ma_compress

BUG: np.ma.compress treated inputs in wrong order; closes #2495
BUG: Fix failing python long behaviour and possible heisen bug

The priority error fixes np.float_(64) + python_long not working
anymore. The second change reformats the
PyArray_GetAttrString_SuppressException to avoid a possible
heisenbug decrefing an object before use.
Merge pull request #3453 from seberg/fix-enhanced-dtype-detection

BUG: Fix failing python long behaviour and possible heisen bug
BUG: fix uninitialized-use on invalid sort kind

orign is unset at that point but used in the fail goto,
can probably only be triggered by using the C-api wrong.
Merge pull request #3456 from juliantaylor/uninitialized-use

BUG: fix uninitialized-use on invalid sort kind