memory: Improve float32x4::load_broadcast on AVX
memory: Fix code duplication in vector initialization

Most of the time we can defer to the generic initialization version
instead of immediately using architecture-specific functionality.
compare: Add cmp_ge and cmp_le for floating-point numbers

These can't be easily emulated if NaNs need to be taken into account.
shuffle: Prefer not to use auto where it makes code less understandable
shuffle: Remove dependency on std::array

We use only small subset of std::array capabilities. This commit will
also reduce diff with the c++03 branch.