Add initial support for OpenCL.
Refine OpenCL infrastructure & add Python bindings.
Allow lazy allocation / initialization.
Optimize Python bindings for lazy data movement.