LU factorization: add allowsingular keyword argument (#52957)
Currently the `check` argument of `lu` conflates failed factorization
(invalid factors) and valid factorizations that have a rank-deficient
factor, and the `show` value for the factorization is misleading in the
latter case.
This PR adds an `allowsingular` keyword argument to `lu` and the
corresponding `issuccess` method to treat valid but rank-deficient
factors as success. It also changes `show` to show the factors as usual
in such cases, but with a "rank-deficient" note.
The invalid vs rank-defficient factors are distinguished using negative
`info` values in the rank-deficient case, as proposed in #27657.
Fixes #27657
Co-authored-by: Daniel Karrasch <daniel.karrasch@posteo.de>
Co-authored-by: Jishnu Bhattacharya <jishnub.github@gmail.com>