Improve expressivity of OpenCL address space qualifier

By moving the qualifier after the type, we can construct pointer or
reference types with a qualifier such as
  cl::sycl::local<cl::sycl::global<T> *> p
for the OpenCL version
  T __global * __local p