Changes:
- Add modules for element-wise operations (`ElementOperation`, `Stress`, and `Strain`) (for usage, see the example [examples/topology_optimization/ex_volume_stress.py](https://github.com/aatmdelissen/pyMOTO/blob/master/examples/topology_optimization/ex_volume_stress.py))
- Add density filter based on convolution, allowing 'padded' boundary conditions and custom filtering kernels (for usage, see the example [examples/topology_optimization/ex_compliance_padding_filter.py](https://github.com/aatmdelissen/pyMOTO/blob/master/examples/topology_optimization/ex_compliance_padding_filter.py))
- Aggregation modules with active-set and approximation correction strategies
- Rework of linear solvers as a separate package in pyMOTO
- Addition of iterative solver (CG) and several preconditioners (Jacobi, SOR, geometric multigrid)
- Geometric multigrid preconditioner for solving large-scale topology optimization problems (for usage, see the new example [examples/topology_optimization/ex_compliance_multigrid.py](https://github.com/aatmdelissen/pyMOTO/blob/master/examples/topology_optimization/ex_compliance_multigrid.py))
- Several bugfixes and minor improvements
What's Changed
* Convolution filter by aatmdelissen in https://github.com/aatmdelissen/pyMOTO/pull/17