core: simplify kernel selection code.

WIP!

Use a string instead of a state-machine-ey kernel selection mechanism
where kernel names have to be predefined. This should allow just dropping
new kernels into dir `kernel` without bloating the code in three other
places.

Is in dire need of a cleanup, function parameter check, edge case check -
all the usual testing.

In particular, checking these definitions/keywords:

* enum cl_kernels
* kname
* [c]gpu[s]->kernel (and similar)
* memory cleanup after strdup()?..
* chosen_kernel
* queue_scrypt_kernel
* strbuf
* initCl
opencl: remove cl_kernels structure definition and mention.

No longer used.

TODO: check if clState would benefit from having kernel name.
misc: add comment on what cgpu_info->{,k}name are.
opencl: rename queue_scrypt_kernel() to queue_kernel().

There are no other kernels, and differentiating kernels in the future
should be done in a universal way, preferably not by choosing a function.

Note how queue_kernel() is used (passed as function reference).
opencl: rename cgpu_info->kname to cgpu_info->kernelname.
build: remove kernel name definitions from configure.ac.
opencl: add log notice, change another to notice level, shorten comment.
misc: suggest checking configuration in log message.
core: check if GPU thread is disabled before checking if it's waiting on getwork.

Otherwise the watchdog thread segfaults on checking an uninitialised
thr->getwork value.
doc: update doc/KERNEL.md to reflect the fact that kernel names are no longer hard-coded.
doc: update README.md doc list, rename KERNEL.md to kernel.md.
misc: update NEWS.md.

Closes https://github.com/veox/sgminer/issues/43