simd_array: refactor implementation to recurse

simd_array<T, N> now has two members: simd_array<T, N/2> and
simd_array<T, N - N/2>. This allows clean implementation of simd_array
with N not a power of 2. Also it hopefully reduces the implementation
size considerably, making the whole thing easier to understand and
maintain.

Implemented so far:
- zero init
- copy
- broadcast from T and int
- all compares
- addition
- const scalar subscript

This refs #613

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_array: ensure default ctor nulls

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_array: operators -, *, /

refs #613

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_array: default to Vc_INTRINSIC for now

make sure this all remains syntactic sugar

refs #613

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