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