read_* functions now all return void
reduce calls to clFinish
support non-blocking kernels and buffers