Fix platform information functions & add platform information example

There were some issues with the diagnostic functions - `Platform.profile_info` plain didn't work (always returned an apparently-empty string), and `Device.name` did unnecessary allocation, and passed `clGetDeviceInfo` out parameters of (potentially) incorrect types.

I discovered the problems with the information functions when I was trying to write a program that would display information about the opencl implementation on the system, something like `glxinfo`. I figured I would include that for good measure, but I can remove it if need be.