Rehauled event system. Now all events contain an array of shared_ptrs to cl_events, allowing for an event system much closer to the OpenCL event model