SVD Decomposition

I made ```getS``` return ```AMatrix``` instead of ```ADiagonalMatrix``` because those don't necessarily have to be square.