Properly handle kernel compilation failure

- without this, syntax errors would result in pocl_llvm_build_program
  returning 0 and clCreateKernel failing in the following code, returning
  CL_OUT_OF_HOST_MEMORY
Check for NULL kernel_name in clCreateKernel
Properly handle invalid kernel name in pocl_llvm_get_kernel_metadata
Add tests for commit c94ed021030bbc85a6c5d281e5a73c362cfdd871 ..

... "Properly handle kernel compilation failure" - check for
CL_BUILD_PROGRAM_FAILURE of invalid kernels
Add tests for clCreateKernel changes

- commits 7e40b6159cbbf and adb54b375c2843
Move check_cl_error() function to libpoclu

- it could be useful to others as well
Add TEST_ASSERT and CHECK_OPENCL_ERROR_IN macros

- assert() from assert.h is not very good for tests,
  since it depends on NDEBUG macro
- replace all assert uses in runtime tests with TEST_ASSERT
Remove an assertion that's redundant now

- causes abort instead of CL_INVALID_KERNEL_NAME being returned
Fix use of uninitialized variable (err)

  .. and fix the end of test_clCreateKernelsInProgram.c
Initial implementation of clGetKernelArgInfo()

- TODO tests & handle missing arg names gracefully
Fix missing CL_KERNEL_ARG_ADDRESS_PRIVATE
Fix messages in assert() calls
The number of kernel metadata is varying

- SPIR has one extra and one optional metadata.
Metadata structure is different when using SPIR

- arg_name only present with a compiler switch,
  so clear the memory with memset
Initial version of tests/runtime/clGetKernelArgInfo
Clean up the code a bit
make test_clGetKernelArgInfo use error checks in poclu.h