Implement `homogeneous_lde`

Solves a system of homogeneous linear diophantine equations when given
in it's matrix form. This method returns the basis of the solution set
if the system is solvable. A solution is a vector of natural numbers.
Add tests
Overload `==` for MatrixBase types inside CSymPy namespace

Otherwise we can't get `std::find` to work for DenseMatrix types.
Add reference
Merge branch 'master' into homogeneous_lde

Conflicts:
	src/matrix.h
Refactor `homogeneous_lde` using zeros
Remove redundant `else` statement
Use `std::vector` instead of raw C arrays
Remove unsafe code as suggested by Ondrej

Original comments:
https://github.com/sympy/csympy/pull/335#discussion_r20880442
https://github.com/sympy/csympy/pull/335#discussion_r20880146
Check whether entries of `A` and `product` are integers
Add assert statements to verify that we are dealing with Integers

Assert statements are not going to slow anything in release mode and
will prevent segfaults in debug mode. Change was done following advice
from Ondrej. Original comment:
https://github.com/sympy/csympy/pull/335#issuecomment-64804701
Merge pull request #335 from thilinarmtb/homogeneous_lde

Homogeneous Linear Diophantine Equations