Modified LU decomposition so it aligns with the API

I added a public class as an interface for users to access the class in impl, and changed getPivotMatrix method to return a Permutation Matrix.

computeSingular method works only if matrix has rows <= columns, so I added an exception inside it. I didn't know how else to handle it. Maybe we can just throw that function away?