Clean up Diagonal methods

- New subtraction, scalar multiplication, division methods
- New linear solver, eigensystem solver, singular solver methods
Add tests of Diagonal methods
Restore missing <=(Float16,Float16) operator
Merge pull request #5263 from JuliaLang/cjh/solve-diag

Specialized solvers for Diagonal matrices