Specialized solvers for Diagonal matrices

This PR provides generic linear solvers, eigensystem solvers and singular value solvers for Diagonal matrices.

Where possible, the tests go beyond the standard `BlasFloat` numeric types to include `Float16`, `BigFloat` and their complex analogues.