OpenCL: Shrink result buffer

This makes the result buffer as small as necessary; however, the change
is unsafe (see comment in trans.cl). There are two ways to make this
safe:

(1) Implement what the comment in trans.cl proposes. However, this is as
    slow as me jogging (to be more specific: It makes _everything_ four
    times slower).
(2) Start one kernel less than required in each iteration and execute
    the last one on the CPU. This would probably work pretty well, but
    will probably cease to work if we start using local/shared memory.
OpenCL: Rely on shared (host) memory

Rely on host memory being used for the result buffer in order to make
the “fast” unsafe variant safe (without losing speed).