Experimenting with async interface.

I need to maintain access to the underlying CLEvent objects to properly
block subsequent operations in the OpenCL driver rather than user code,
but it's still not a nice API on the Haskell side, due to all the
explicit threading of CLEvents and the releasing of same.