Implement sparse matrices

Code from scipy.sparse is used here with slight modifications. Currently,
sparse matrices are represented using CSR form inside `CSRMatirx` class. Tests
were added to check `from_coo` method.

Important
---------

* I removed the templating of the functions in scipy. They were templated by I
and T where I was used as the type of indexing variable and T was the type of
data. In our case T is always `RCP<const Basic>` and I is `unsigned`. Perhaps
it will be good to template all of our functions by I.

* I used `std::vector` to keep track of p, j, x arrays in CSR format instead
of C style arrays or `std::array`. I think it is the best option untill this
gets adopted in C++:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3532.html

We can't use C-Style arrays or `std::array` as we don't know the number of
elements at the compile time.
Remove C-Style arrays and add assert statements for testing canonical
form. Also indent source correctly.
Refactor and fix some errors

* Remove nnz, no need of this as we use `std::vector`
* Fix a bug in `is_canonical()` caused because of using `row` instead of
  `p.size()`
* Stop passing parameters to `is_canonical()`
* Make `from_coo()` method static, so we can avoid the redefinition
  See here: http://stackoverflow.com/a/6867017/1895353
Check for duplicates

* Initialize p_ when it's created
* Remove duplicates if there are any when using `from_coo` method
* Check for nnz overflow
Merge branch 'master' into sparse and Refactor

* Refactor some of the functions to have a similar API as scikit learn
  and reuse them without repeating code
* Replace `std::vector<RCP<const Basic>>` with `vec_basic`
* Conflicts:
	src/matrix.h
Const cast arguments that are not expected to be modified
Include <algorithm> header
Merge pull request #261 from thilinarmtb/sparse

[WIP] Implement sparse matrices