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 cardinals shuffle
Adapt common shuffle to new system
Adapt Altivec shuffle to new system
Adapt SSE2/SSSE3 shuffle to new system
Small clean-up on pattern functor
Refurbish reverse
fix bad include guard for pick.hpp