get/put ImageData

Started working on the ImageData related api & hit a stumbling block.
There doesn't appear to be any obvious way to accommodate variadic arguments.
In this case the `putImageData` function can be called with 3 or 7 arguments.
So I've made 2 functions where the default is the most common case (3 arg.)