Rename GpuCAReduce to GpuCAReduceCPY
First step of conversion to the new back-end GpuCAReduce.

Added tests and updated the opt to use it. It should not compile for now.
Override perform() (otherwise DebugMode and py linker would use it)
Convert some of the old GpuCAReduce code to the new interface.
Test with dtype specified by the tests.
Port sync
Port gpu reduce opt to make reshape the input if needed.
gpucareduce port continue.
Move Shape Op.
register c code for Shape op with GpuArrayVariable and doc the register fct().
better error message.
Disable some GpuCAReduce test cases that aren't implemented.
Test with clinker too as now the Shape Op have c code
skip test error due to notimplemented cases.
Last back of compilation fix to GpuCAReduce
Add GpuCAReduce more cases and remove warning about shape of 0 in infer shape.
Fix comment.
Fix compilation crash introduced in this PR.
Use the simpler interface to CUDA extension.
Fix crash and comment.