[WIP] Moving OpenCL functionality to OpenCL backend

At this point almost the only thing left is to move device performance
estimation to backend.