Add back half versions of vload/vstore vector function decls, as needed

This is tested by adding CHECK-NOT to vload-vstore-variations.cl test
for implicit declaration warnings. The half vload/vstore function
invocations in this test are fixed to comply with OpenCL so they don't
error when the prototypes are declared. Previously they were incorrect
but without declarations there was no way to tell.

This reverts commit f1f186d301f6ea358136eaf7c8de01e4c8ad8ff1.

Conflicts:
	lib/kernel.cl
Declare read_image{f,ui,i}, if used
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.