cuda-convnet based convolution and max-pooling layers + utilities.

The layers can be used as drop-in replacements for the default Conv2DLayer and MaxPool2DLayer. This means that they shuffle the inputs from bc01 to c01b and the outputs from c01b to bc01 as needed. This behavior can be turned off with the 'dimshuffle' keyword argument. If it is turned off, the user is responsible for appropriately shuffling the layer input and output. nntools.layers.cuda_convnet.bc01_to_c01b and .c01b_to_bc01 are provided for this purpose.