Fix bug in program::binary()

This fixes a bug in the program::binary() method in which
the return size was not being passed to clGetProgramInfo().
Pass binary_status argument to clCreateProgramWithBinary()

This fixes a bug in which certain platforms would return
CL_INVALID_VALUE from clCreateProgramWithBinary() if the
binary_status argument was not provided.
Fix check for local memory size in test_kernel

This fixes the check for the local memory size in the
get_work_group_info kernel test.

While the kernel only allocates 16 float's, some platforms
will use more local memory. This changes the test to check
for at least 16 float's worth of local memory.