User SPIR kernel list when querying program kernels

This avoids returning other functions present in the module as kernel
objects.
Remove extraneous extern keywords

These don't really do anything in this context.
Use initialisers instead of assignments

Following C++ best practices
Allow implicit conversion of llvm::StringRef to std::string
Minor cleanups

Use C++ string formatting; this avoids formating warnings when building
on a 64 bit system and simplifies memory book-keeping
Make Kernel::getArgumentName return a constant string instead of
returning a char* copy, only to be free'd next. Calles will duplicate
this string if required instead.
Avoid conversion to std::string

llvm::StringRef has compare functions builtin - avoid creating a std::string copy of it for comparing
Avoid memory allocations

Simplify the clGetKernelArgInfo function to avoid doing memory
allocations.