Now supports writing image buffers that have differing data and display windows to image formats that do not support differing data and display windows.

Oiio had an issue when passing an ImageBuf through to an ImageOutput where the ImageBuf had differing data and display windows. The resulting image (DPX, in my tests) would be the shape and resolution of the data window, and not of the display window.

This pull request fixes this. Each image format now can specify in supports() whether it supports a 'datawindow'. If it does, then the behaviour is unchanged.

If it doesn't, however, then, just before writing the image data, ImageBuf will call ImageBufAlgo::crop, to ensure that there is data to fill the entire display window. (and crop off any data that is outside it)

Alongside this, when m_spec is stored in the open() function of each format's Output class, it is now done through a stash_spec() function. This checks support('datawindow'), and, again, if it is false, it sets m_spec.width/height/etc to the same thing as m_spec.full_width/full_height/etc.