Gpua rng opt

Add optimization to move an mrg_uniform op to the GPU.

This is currently somewhat fragile because the graph actually needs the opt to work (as in it won't compile if device=cuda0 and the opt is not run for some reason).

Also, don't try to test it on cuda gpus without this fix for libgpuarray: https://github.com/Theano/libgpuarray/pull/7, or you'll get some weird out of memory error in GpuArray_init.