Non-blocking Enqueue

enqueueWriteBuffer is now non-blocking in the kernel functions. This
makes it quicker and allows for multiple things to be processed while
the buffers are enqueued.  enqueueNDRangeKernel is the sequence point
for all kernel queuing.