DUMP: added a macro for easily dumping variable contents in debug mode
argsHasSafePointer: expect the struct to be behind a pointer in manually written C
Moved unsafeBuiltins and unsupportedUnsafeBuiltins to the anonymous namespace
Fixed manually written safe functions to work in at least one test case

Fixes compared to the introduction of the unsafe/safe builtin mapping:
- Builtin functions in C contain a pointer to a struct whereas generated
  builtin functions have the three pointers in one register
- The new code now knows how to find C functions with the proper
  signature (argsHasSafePointer was modified to take this into account)
- and transform the C functions to take the pointers in a register.
  Currently this results in a copy of the register being made so
  that the existing getelementptr calls can be used. Functions
  discardStructName, typesOfFunctionArguments, and transformSafeArguments
  are used to facilitate this.

This change also comes with one new test case test_safeptr_builtin.cl
that has a prototype of a safe implementation for vload4. This
function is not checked for safety but is used by the rest (checked)
code.