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.