Initial commit

Basic structure for Matrices
Implement Matrix Addition

Main changes
============

* Implemet the addition of two dense Matrices.
* Now the `MatrixBase` is derived from Basic, allowing Matrix classes to be
  used as any other CSymPy objects.
* Change the access modifier of `row_` and `col_`of `MatrixBase` from `private`
  to `protected`.
* Declare the functions used to add Matrics as `friend` functions.

TODO
====

* Improve `DenseMatrix::compare`.
* Add more tests.
Implement basic `DenseMatrix` operations

* Implemented Matrix multiplication
* Implemented scalar multiplication and addition
* Implemented get, set methods
* Added new tests
* Corrected the error with `SparseMatrix` constructors
* Implemented gaussian_elimination (but gives a runtime error)
Uncommenting previously commented out test case
Merge branch 'master' into basic_classes_for_linear_algebra_module
Add tests for `gaussian_elimination`
Remove the print statement
Add symbolic test cases
Refactor the tests to use initializer lists

Replace `std::vector<RCP<const Basic>> &` by `const std::vector<RCP<const Basic>> &`
in constructor `DenseMatrix`. This fixed the error with initializer lists.
Merge pull request #169 from thilinarmtb/basic_classes_for_linear_algebra_module

Merged.