simdarray: fix abs and safer API

The “Operations” increment, decrement, and random accepted arbitrary
arguments. This was only caught by the compiler (aka unused arguments).
Now, the declaration of the operator() is clear and doesn't allow extra
arguments. The Abs “Operation” was used differently from how it was
implemented, i.e. it tried to modify the output vector. But its use was
to transform arg#0 to the output vector. Now the Abs::operator() follows
that.

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: using std::forward twice is wrong

std::forward may become a std::move if the argument is deduced to an
rvalue reference. In this case std::forward acts as std::move. Doing
that twice on a variable is plain wrong. So forward only the last usage.

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