CumsumOp on GPU

CUDA implementation of the cumsum for 1D and 2D array. I didn't have time to look how to implement a generic ND version yet.

I put the code in a new file called ``extra_ops.py`` in the ``sandbox.cuda`` folder. I didn't know how/where to put the GPU version of the cumsum, so I took ``sandbox.cuda.neighbors.py`` as an example.

I also added some check and unit test for the CPU version of the cumsum.

Let me know if I should have use a architecture/function/variables that I wasn't aware of.
Theano guarenty that the preallocated output have the right number of ndim and the right dtype. But not the right shape. So you need to change the ndim check with an dim shape. This is the CPU code equivalent you need to do:

!(%(z)s && PyArray_CompareLists(PyArray_DIMS(%(z)s), PyArray_DIMS(%(x)s), PyArray_NDIM(%(x)s)) )