Fixes CanvasPixelArray set polyfill (#4974)

what this PR does to fix #4974 is to inspect the actual image data returned from the canvas context.
If the browser supports Uint8ClampedArray and the image data is of that type we are all set and can return.

if not, we need to check if there might be a set function available. if that is not the case, we wrap the createImageData function and add a set function to it.
As far as I could figure out it is not possible to add it to the CanvasPixelArray prototype used by Chrome 17.
just tested IE. <11 doesn't have set method.
I can try to figure out since which chrome version it is supported. and then we can do a user agent check and polyfill it with like i proposed.