OCL: refactoring

- refactored initialization code with device selection via OPENCV_OPENCL_DEVICE environment parameter
- implemented new version of program binary cache