fix #7564

this is a combination of convert(Rational{T},x) not returning the
correct type, and the lack of a type check in codegen for new().
fix gemv! and gemm! in empty cases. fixes #7571

should always mutate, not sometimes return a new array