Return ErrSingular for singular matrix solves

Fixes issue #30.
Because of the special casing in solve, it would be nice to have the m > n and m < n cases as well.