Preserve types when adding/subtracting Herm/Sym/UniformScaling (#29500)
* Preserve types when adding/subtracting Herm/Sym/UniformScaling
* Make `real(::SymOrHerm{<:Real})` consistent with `real(::Array)`.
* Fix embarrassing ambiguity
* More tests, remove imag(::Hermitian), simplify code
* Remove `.λ`