Document and Test Convolution

To thoroughly check convolution, the output is compared against a reference implementation by explicit looping. Simple and group convolution by the Caffe and cuDNN engines are checked against the reference.

The reference convolution rolls 8 loops deep.

- [x] comment ConvolutionLayer / im2col
- [x] comment CuDNNConvolutionLayer
- [x] switch to random weights instead of averaging