Remove homemade profile.hpp in favor of 3rd party tools like CodeXL

This commit allows the removal of many clFinish() calls since they existed only to force the execution of GPU code to get an accurate time measurement.

Also, the current OpenCL context is now passed by reference into simulate_single_frame() to avoid an unnecessary destructor call (thus clReleaseContext()) on every frame.
Remove a pair of un-needed read/write before sorting
Replace unnecessary writeBuffer

Before counting the particles in each bucket, the buffer can be zero'd on the GPU with enqueueFillBuffer instead of zero'ing it on the CPU and writing it back.