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.
This is not ok.  Scipy is an optional dependency for theano so the tests need to still work (i.e. not crash) when it isn't there.