CudaTensor: rowMajor (C contiguous) by default (CuBLAS GEMM for row major result)
CuDNN backward convolution only supports C-contiguous (row-major) tensors for the gradient to be backpropagated, as in here:

https://github.com/mratsim/Arraymancer/blob/27d5a27d5ead424fba4c48f0f9e272df71f0f568/src/nn_primitives/nnp_conv2d_cudnn.nim#L69-L100

The only thing blocking this is CuBLAS requires the result matrix C of matrix multiplication to be F-contiguous (column major) in `C <- alpha A * B + beta C`.

In practice that means that a convolution followed with a linear layer will always require a copy to change the CudaTensor layout.

The solution to this is implementing a trick to allow row-Major result in cublas GEMM without explicitly transposing as described [here](https://www.christophlassner.de/using-blas-from-c-with-row-major-data.html) and used in Torch:

https://github.com/pytorch/pytorch/blob/502aaf39cf4a878f9e4f849e5f409573aa598aa9/aten/src/THC/generic/THCTensorMathBlas.cu#L228-L379
