caffe conv kernel for theano. tests work, but needs integration and some...

The caffe convolution works and passes test, however, code needs some cleaning, which are marked with TODO in comments.  I created a new file, theano/sandbox/cuda/tests/test_conv_gemm.py that calls GpuConvMM. 

TODO:
- [x] Add support for the full mode
- [ ] Remove The need of gpu_contiguous
- [ ] Add support for strides (probably only square strides)
We don't pass it to validMM(), we just init the output memory to the right size, but will write to the full memory output region! So it is not working for now.