simd_array: many features, esp. casting, implemented
simd_array: many features, esp. casting, implemented

* size() instead of size. Because this makes simd_array compatible with
  the standard container interfaces.
* support all loads, stores, casts, mutable operator[](size_t), gather,
  scatter, setZero(Inverted), masked assignment, abs
* let simd_array skip integral SIMD vectors from AVX because at this
  point AVX::int_v is made up of two SSE operations per called
  operation.
* implement generic cast logic for splitting/merging from vectors of
  different size(). This is more complicated than it should be, but
  consider what is needed to cast from simd_array<double, N> to
  simd_array<float, N>. The former might contain only scalars while the
  latter wraps a single SIMD vector register. A conversion thous
  requires a call to a converting function with N parameters.
* added a few simd_mask_array operations

This refs #611

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

VcDevel/Vc,chr-engwer/Vc,VcDevel/Vc,chr-engwer/Vc,VcDevel/Vc,chr-engwer/Vc,VcDevel/Vc