Treats device id like an actual pointer (cl_device_id) instead of a guint64
Adds new class GoclEvent wrapping cl_event
Adds new methods read_sync() and write_sync() to GoclBuffer
Adds new class method GoclEvent::list_to_array()

This method will convert a GList of GoclEvent objects into an array
of cl_event that can conveniently be passed to OpenCL calls such as
clEnqueueNDRangeKernel, clEnqueueWriteBuffer, clEnqueueReadBuffer, etc.
Uses the @event_wait_list arg in read_sync() and write_sync() of GoclBuffer
Renames get_queue() of GoclDevice to get_default_queue()

Since many queues can be created for one device, it is more accurate to call
device's queue the 'default' queue.
Adds new argument @event_wait_list to run_in_device_sync() of GoclKernel
Removes read_buffer_sync() method from GoclDevice

Buffer reads are now done using GoclBuffer::read_sync().
Adds new method run_in_device() to GoclKernel

This is the asynchronous version.

The asynchronous pattern used is very experimental. The method returns a
GoclEvent which can be used to synchronize with other OpenCL queued calls
that accept an event wait list.

To execute code when event triggers, GoclEvent::then() method should be
used.

This pattern is somehow similar to the Promise pattern usually found in
Javascript libraries.
[doc] Adds symbol documentation to GoclDeviceType enum
Fixes minor indentation issues