* improved the workarounds of the last commit as it turns out that neither the intel compiler nor the amd compiler like it (intel explicitly prohibits the use of "__typeof__", amd isn't clang/gcc compatible)
 * for the intel opencl compiler (and all other clang/gcc based compilers): add a 16-byte alignment attribute to all buffer-based/software image pointers, so "__alignof__" can be used instead of "__typeof__", since all native images are either 4 byte or 8 byte aligned (yes, this is major hack, but it's the only option to get some degree of compile-time type differentiation in these compilers)
 * for the amd opencl compiler: luckily, this can use a proper and standard conforming c++ solution (hey khronos, OpenCL _really_ needs official/standard c++ support)
 * consolidated basic c++ type templates in oclr_cpp.h, which can be used by both the amd opencl compiler and the nvidia cuda compiler