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)
Added basic eval for asin

Found out a bug while writing testcases.
Reported it at #174
Figuring out the best way to avoid multiple creation of lookup
tables created in SymPy's version of inverse trig functions
Merge master into inverse_trig

Resolved the conflicts after merging from #173
Removed the tests which fail
Uncommenting previously commented out test case
Added inverse sin/cos lookup table

The lookup table will be used by both `asin` and `acos`.
This is a bit change in design as opposed to that of SymPy's
version where the lookup table was created during the function
itself. This could affect performance when multiple instances of
`asin` or `acos` are made.
Updated `asin` to use the inverse_cst lookup table

Added a function `inverse_lookup` which performs the lookup in
the appropriate lookup table. This is needed because there will
be a different lookup table for `atan`. So a generic function
to search in the appropriate lookup table.
Updated is_canonical for asin, updated definitions in functions.h
Added inverse trig class `ACos`. Added tests.
Added Inverse Trig class ASec. Added tests.

Found a possible bug:
assert(eq(div(one, sqrt(i2)), div(sqrt(i2), i2))) fails.
All the other tests pass.
Merge branch 'master' into basic_classes_for_linear_algebra_module
Merge branch 'master' into inverse_trig

This commit fixes the tests failing for negative sign in denominator
Add tests for `gaussian_elimination`
Added inverse class `ACsc`. Added tests

Need to add `abs` in `diff`. One test case fails due to bug in pow
Fixed some extra whitespaces.
Fixed diff of `asec`
Added inverse tan/cot lookup table
Added invese class `ATan`. Added Tests.
Remove the print statement
Add symbolic test cases
Added inverse class `ACot`. Added tests.