clover: support IL programs
The extension cl_khr_il_program and OpenCL 2.1 added functionalities to provide kernels as intermediate languages rather than OpenCL C. This merge request adds the infrastructure for it, as well as support for the extension and the extra OpenCL 2.1 functions.