Fix realview
Description
This changes RealView to only permit write operations when the scalar is std::complex<T>, or any scalar the user is confident that meets the requirements to access the components as if it were an array of real numbers, i.e. via reinterpret_cast<RealScalar(&)[2]>. The user can specialize complex_array_access<Scalar> : std::true_type to enable the write accessors.
The changes to the packet ops account for unusual situations that are rare in practice, usually involving unaligned arrays. I have added a bunch of tests that hopefully covers all scenarios. The change in performance is very minor, especially for larger arrays.
Reference issue
Additional information
Edited by Charles Schlosser