GpuContiguous, tests, better opencl support

For the opencl, we skip some tests when it isn't supported and use the cpy reduce implementation when we can.
This is fine for now, but thinking of multi-gpu I'm starting to feel like we should have a context attribute for apply nodes or something.

I'm not sure yet how that would work out, though.