Fix bug in Matrix4x4.Decompose.

While working on the Win2D numerics implementation, I discovered this longstanding issue
which was inherited from XNA. In some corner cases where one axis of a matrix transform
has degenerate (zero) scale factor, the Decompose method tries to compensate by filling
in an artificially generated orthogonal coordinate system, but was doing this wrong and
generating nonsense results.

Also updated unit tests to properly validate decompose of matrices with zero and negative
scale factors.