finish simd_for_each algorithm

There are two implementation strategies:
a) the lambda is callable with a const-ref Vector<T>: in this case a
load from memory suffices
b) otherwise: after the call the variable needs to be stored back to
memory.

And in case the value_type of the container is not arithmetic it falls
back to std::for_each anyway.

=> new trait is_functor_argument_immutable (pure evil magic)

Contains a unit test.

Signed-off-by: Matthias Kretz <kretz@kde.org>