Conv gemm non-square kernel support

This add support to non-square and kernels and strides sizes. It passes all tests. 

Features:
- [x] A Filter sizes (including non-square) supported
- [x] All stride sizes supported.

This finishes some TODOs in gh-2015.
Sorry, I was just following Fred's request to make `test_subsample` look like `test_full` and `test_valid`. They all have disabled the regular convolution tests and added tests for the gemm-based convolution instead. There are also lines such as `shapes=shapes[:277]`, `shapes=shapes[:10]`, multiple definitions of `version` lists overwriting each other...

How were the tests supposed to look like? Maybe re-enabling the ordinary convolution tests and adding
```python
version = [-1]  # dummy version; not used by GpuCorrMM so one version is enough
```
between the ordinary convolution tests and the CorrMM-tests that use the same shapes?