The opencl-c.h needs a lot of rework to support OpenCL C 3.0 with the optional feature set.
This patch refactors all the C11 atomics, along with changing when generic pointer interfaces can be used and a few other bits.
It will need some decent review and maybe some testing by other CL users to make sure I've haven't messed up when used with a fully featured CL 3.0 stack.
clang-format: please reformat the code