Use user-include syntax

This avoids accidentally including system-clang headers rather than SPIR
headers.
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.
More malloc cleanup

Simplify functions to remove use of mallocs (and simplification)
Still more malloc's on this file to go...
Use llvm's StringRef type instead of std::string

This avoids string copies
Fixes a silly memory bug I introduced
Add kdevelop to the ignore list

Avoids .kde4/ and project file from being considered by git
Add support for vstore_half round modes

Emulate float to half conversion round modes
Use string references to avoid copies

Previous code was using string copies which do heap allocations. Passing by reference avoids these.
Fix typo which broke the build.
Add the convert_half builtin

Implements conversions to the half type
Merge pull request #57 from silverclaw/master

Some more half support