CL++ (OpenCL++) provisional implementation

This defines C++11 mode OpenCL counterpart standards: cl++, CL++1.1 and CL++1.2,
cl++ language with cl++, clpp or clxx source file name extensions.

This makes possible to produce SPIR LL output from C++ code and use it to
create OpenCL SPIR compatible kernels.
Implicit address space conversion on POD assign

When assigning to POD without user defined copy constructor implicit address
space conversion will be done if assigned value has same type but different
address space and no matching constructor was found.

This allows OpenCL address space conversion in C++ mode for POD types.
Try to perform OpenCL type initialization in C++

We may consider using OpenCL in C++ mode, so OpenCL type initialization should
be performed regardless if we are using C or C++.