Implemented infer_shape on cudnn ops.

border_mode can be a tuple. When this is the case, it is the value for pad. So there should be a else clause

elif isinstance(desc.border_mode, tuple):
   padh, padw = self.border_mode
else:
   assert self.border_mode == 'valid'