Adds caffe's implementation of the full convolution to CorrMM; cleaning up and documenting the code on the way
Refactored GpuCorrMM to be split into separate ops for the forward pass and the two backward passes
GpuCorrMM_gradWeights: fixed shape inference
GpuCorrMM: more elaborate error message in case of shape inconsistency
added tests for GpuCorrMM_gradInputs and GpuCorrMM_gradWeights
Added test_gemm_grads() test to test whether the gradients of GpuCorrMM are correct
conv_gemm optimizer chooses between GpuCorrMM and GpuCorrMM_gradWeights for valid convolution
GpuCorrMM: more documentation, more error messages
GpuCorrMM: Removed pad='auto', added pad='half' and pad='full', added shape management for gradients
GpuCorrMM: Added gradients of gradients
GpuCorrMM: documented output refcounting
Reordered and partly rewrote nnet.conv documentation page to make it more accessible
GpuConv now adopts nkern and bsize from ConvOp, conv_gemm and conv_fft_* optimizers use it if available
Cut down GpuCorrMM gradients test to about 5 minutes
Added warnings about CUBLAS bug to GpuCorrMM documentation
GpuCorrMM_gradWeights: Saved a CUDA call
Added C-contiguity checks to GpuCorrMM CUDA code
Move the _apply versions of the function under CLinkerOp
and clarify/update documentation.
Add c_{init,support,cleanup}_code_struct to allow inserting stuf at the struct level.
Fix documentation updates after comments.