MIC simd_cast: 5-7 & 9-16 Scalar -> MIC casts

Signed-off-by: Matthias Kretz <kretz@kde.org>
casts test: test all possible N->1 casts + rnd fix

the rnd() function as previously defined was able to generate NANs
(Random returns a 0 and T(numeric_limits::max) was inf. 0 * inf is NAN.
Now the rnd() function checks for NAN and sets those to zero.

The extraInformation function got a variadic template implementation,
using the stream operator pack expansion hack I developed for vc_debug_
in simdarray.h.

cast_vector_impl recurses to more and more arguments until the source
entries exceed the destination number of entries.

Signed-off-by: Matthias Kretz <kretz@kde.org>
has_contiguous_storage: cover more types (esp. T*)

+ unit test

Signed-off-by: Matthias Kretz <kretz@kde.org>
MIC: use common gather/scatter interface

This brings the MIC implementation up to speed with the latest changes:
gather and scatter tests are working.

Signed-off-by: Matthias Kretz <kretz@kde.org>
MIC: avoid _mm512_knot (converts to __mmask16)

instead use Mask::operator! and then capture the correct type via
Mask::data().

Signed-off-by: Matthias Kretz <kretz@kde.org>
MIC: improve docs and make MaskType accessible

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: fix internal_data(simdarray) declaration

ICC needs the declaration of internal_data early and this requires a
slightly more complicated way to define the function and declare it as a
friend.

Signed-off-by: Matthias Kretz <kretz@kde.org>
mask test: move local variable into lambda

Signed-off-by: Matthias Kretz <kretz@kde.org>
math test: frexp and ldexp uses IndexType

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