Declare integer/float/double vload/vstore if they are used

The declaration helper macros added to kernel.cl for this are not
exactly the same as the ones removed in reverted commit 9a1e, as I thought
they produced way too many unneeded declarations with preprocessor-stage
textual matching. However, the new macros produce the exact same set of
declarations if vload/vstore of all widths are used.

vloada?_half could pretty easily use the same approach to gain five
times better granularity in choosing what to declare, but for now let's
keep it as is as it is a pretty rarely used function.

One test expected that invocations of vload4 with malformed
arguments would end up as far as VLoad::wrapFunction(), which
prints errors for that as a sanity check to prevent crashing.
With the declarations added, this is caught as early as the
first matcher stage, so a different error is printed - the test
is repurposed accordingly.

This reverts commit 9a1e2816415830e5f61d12fbea720cb11c1f4cd9.
In all builtin function tests with FileCheck, verify declarations

prefetch() was still missing and now has an oneliner fake declaration
added
Incredible optimization: Declare only two fake vers of a_w_g(_s)?_c each

This makes the test suite run in 45s instead of 70s on my setup.

It doesn't matter if we have the correct overloads or just ones taking
void * (which everything casts to) as all overloads are forbidden by
name in WebCLAnalyser. We can get there with just the void * dummies.