transformSafeArguments: Here argument indices start at 1, not at 0
Large vector data types are passed by pointer. Skip them.

When large values such as a float8 is passed to vstore8, it will be
passed as a pointer by Clang. As the safe implementation is written in
C, the manually written safe implementation of the safe builtin will
appear to have multiple different pointer arguments and it becomes
difficult to see which is the actual safe pointer argument, but
fortunately parameter attributes indicate that (such values have
attribute byval).

This patch skips processing of 'byval' pointer arguments in manually
written safe builtin functions. As the type goes through unchanged the
later code to pass smart pointers to this function will not break this
code.

This leaves a potential loophole if the incoming data is not generated
by Clang: it is possible to create llvm code that bypasses this
check. This would not be WebCL code anymore, though.
test_safeptr_builtin.cl: implement all vloads and vstores