Homogeneous Linear Diophantine Equations

This PR adds the ability to solve a system of homogeneous linear Diophantine equations.
 
I converted python code found [here](https://github.com/sympy/sympy/pull/7241) to C++. These are the to-dos listed there.

* Implement solutions for inhomogeneous case
* Add more tests
* Find solutions in negative integers if possible

These can be implemented in separate PRs. I skimmed through the paper but I don't remember why I put the  last one. Let's think about that after this PR is merged.

Link to the research paper: [An Efficient Incremental Algorithm for Solving Systems of Linear Diophantine Equations](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.47.2737).

#### TODO
- [ ] Merge #332 and refactor this PR
A similar method to `vec_basic_eq_perm` in `dict.h` for matrices would make the code simpler in tests here if `std::vector<DenseMatrix>` is used frequently.