Fixed prunning for AMD

1. Made warp_any buffer volatile

Having several threads inside a work group writing to the same
local/global memory location is not defined by the OpenCL specification.
However, in CUDA it is defined and having several threads inside a warp
writing the same value to the same memory location is safe.
For AMD, it should generate a bank conflict, resulting in serializing
the write operations. In practice, the kernel does not produce the
correct results possibly because of the compiler.
Added enum for OpenCL vendor, get_vendor_id function

1. Added ocl_vendor_id_t type
2. Added get_vendor_id function