Change method signatures of some methods in MatrixBase

* `inv()` had a wrong return type, i.e. `RCP<const MatrixBase>`, now it
  returns `MatrixBase *`
* Avoided returning references and changed the return type to
  pointers in the following functions:
  `add_matrix()`
  `mul_matrix()`
  Reference: http://stackoverflow.com/a/752699
Implement four methods in DenseMatrix

* Following methods were implemented.
  `inv()`
  `det()`
  `add_matrix()`
  `mul_matrix()`
Wrote wrappers for `det()` and added tests
Change some of the method APIs of MatrixBase class.

Method APIs of add_matrix(), mul_matrix() and inv() were changed.
Now the output is returned as an argument.
Implement wrappers for inv(), add_matrix() and mul_matrix()
Add tests
Remove _matrix_c2py()

Refactored `inv()`, `mul_matrix()` and `add_matrix()` methods to stop using
`_matrix_c2py()`
Make add_dense_scalar and mul_dense_scalar const correct
Implement more member methods in DenseMatrix class

Following methods were implemented:
* `add_scalar()`
* `mul_scalar()`
* `transpose()`
* `submatrix()`
Implement wrappers for transpose, submatrix, mul_scalar and add_scalar
Refactor `submatrix_dense()` function

* Allow for extracting row vectors and column vectors.
* Make column and row numbering start from zero as done elsewhere.
Add tests
Add more methods to DenseMatrix class

Add new methods for LU, LDL factorizations and LU solve.
Implement wrappers for LU, LDL and LU_solve
Add tests
Remove `matrix_c2py()` function
Merge pull request #286 from thilinarmtb/wrappers_II

Wrappers for DenseMatrix class