Support for arbitrarily large OpenCL build logs

I've experienced a few OpenCL build failures recently that weren't able to retrieve the build log due to the hardcoded limit on log size. Unfortunately if the buffer you pass to ```clGetProgramBuildInfo``` isn't big enough for the whole log, you don't get anything at all.

This fix just queries the size of the log and dynamically allocates memory to hold it.