Back to using offline compilation with PyOpenCL, maintaining the paradigm of separating generation, compilation and execution. Also fixed a few bugs.