Utilize the event list argument

Expose the event_list argument to the API user to allow chaining of OpenCL commands.

This introduces the trait EventList which can be used to set the event_list arguments in enqueue_async_kernel or clWaitForEvents. EventList is currently implemented for a ```Event```, ```~[Event]```, ```Option<EventList>```, and ```()```.