Fixed bug in index_norm_inf for small vectors (uninitialized local/shared memory)

Affected CUDA and OpenCL backends.
Improved vector-test, which had a numerical instability in the element_div() section.

Round-off errors due to poorly chosen test data caused the test to fail occasionally.
[API Change] Refactored OpenCL backend: Kernels are now generated automatically from compiled program.

A user thus no longer needs to call prog.add_kernel("...");, as this was somewhat redundant anyway.
As a nice side effect, there should be less overhead involved, as the OpenCL backend is now called only once rather than multiple times.