move make include in preprocessor/make.hpp to avoid some issues with cyclic includes
Remove useless include in butterfly
Fix all_reduce hierarchy matching
Refurbish reverse
Refurbished broadcast<N>
Refurbish repeat_lower/upper_half
Implement generic shuffler

shuffling now use an open extensible system to specify both
any kind of potential optimizable pattern and a way to perform
arbitrary permutation.

System use externally specialized template structure so adding
new pattern is easy. Specific architecture can also inherit
from some default permutation handler or pattern optimizer then
overload their own specific way of optimizing/permuting.

Default pattern for identity, zeroing and interleaving are provided
and are likely to be completed later on.
Amended tests over 2/4/8 cardinals shuffle
Adapt common shuffle to new system
Adapt Altivec shuffle to new system
Adapt SSE2/SSSE3 shuffle to new system
Add support for AVX shuffle

Still patterns to add and possibly some permutations
Prevent clang issues with shuffle computation

clang use macros for _mm_*_shuffle_* so the meta-function
computing the shuffling mask need to be put in parens or
clang will think the intrinsic has too much parameters.
More basic permutation matching for AVX
Fix spurrious parameter type change in SSE2 repeat_*_half
adding simd/ suffix to includes in shuffle
Merge pull request #668 from MetaScale/improve_shuffle

Improve shuffle implementation