Fix bugs in umath_linalg + add more tests + remove unused code

The `umath_linalg` module incorrectly calls BLAS functions with negative strides, which have a different meaning in Numpy vs. BLAS. This PR corrects the issue.

The test suite is partly rewritten, and now tests several stride combinations. There were also some generator tests there that did not run because of subclassing from TestCase (fixed). This obscured a minor bug in eigvalsh return value types.

I also removed all umath_linalg code that is currently not used. Some of the functions had no tests (and, as the rule says, were also broken), so it's better to not have this clutter in the master branch. The code can be added back later with proper testing.

Fixes gh-3876

**TODO**: This is **not yet merge-ready**. There's still some strange behavior --- `eigh` apparently accesses elements from the lower/upper triangles even if UPLO is 'U'/'L'. Needs looking into, not sure if it's LAPACK at fault or something else...