Rename current rows() and cols() to n_rows() and n_cols()
implement row() and col() such that they take a number and return a Vector object of that row/column
puts asserts in these functions to catch invalid index access outside the matrix dimensions. From pointer arithmetic this is valid and would case a compile time error! checked the asserts in the tests too
Rename current rows() and cols() to n_rows() and n_cols() implement row() and col() such that they take a number and return a Vector object of that row/column