Implement diagonal solve

With this PR we can solve `Ax = b`. But this is a very naive way to solve `Ax = b`. There are other algorithms based on Matrix decompositions. This is done so that we can benchmark our implementation.