Implement ImageBufAlgo::flip, ImageBufAlgo::flop and ImageBufAlgo::flipflop; remove ImageBufAlgo::transform, use flip, flop and flipflop in oiiotool
LG refactors Robert's flip/flop/flipflop code.
There was nothing wrong with Robert's code, but LG has been totally
overhauling ImageBufAlgo and oiiotool code lately and as a very specific
aesthetic in his head at this point.
Merge pull request #577 from lgritz/flipflop

Flip, flop, flipflop refactor -- combination of Robert's patch and Larry's refactor
Refactor imagebufalgo.cpp -- too much code for one file, split it into parts
* imagebufalgo_compare.cpp - analysis and comparison of images
* imagebufalgo_copy.cpp - move pixels or channels around, don't change values
* imagebufalgo_pixelmath.cpp -- math on single pixels at a time
Everything not falling into these categories was left in imagebufalgo.cpp.
This nicely splits the IBA functions almost evenly between the files,
which will make much kinder compile times when tinkering with any one.
Bug fix for endian swap in IFF input (courtesy of Scott Johnston)
Easy way to swap two ImageBufs.
Allow ImageRec ctr to take NULL for miplevels, meaning 1 per subimage
Safer uninitialized test for ImageBuf, I think
IBA::transpose() and oiiotool --transpose
Use extract_options for action_pattern, allow checker to take height & depth.
IBA::mul and oiiotool --mul : component-by-component multiplication
IBA::channel_sum and oiiotool --chsum
Turn a multi-channel image into a 1-channel image via weighted sum of channels.
IBA::circular_shift, oiiotool --cshift
Fix bug in oiiotools --channels channel renaming
Incorporate KissFFT
ImageBufAlgo::fft and ifft, and oiiotool --fft, --ifft
Merge pull request #579 from lgritz/lg-fft

fft, ifft, circular_shift, channel_sum, channel-wise mul, transpose
ImageInput close/dtr leaving files open fixes
* For a couple formats, the ImageInput dtr didn't automatcially close() the
  file if it was still open.
* For a couple formats, a redundant call to close() might have strange
  effects because it didn't double check that the file was open.
Move shared_ptr and intrusive_ptr from the global to the OIIO namespace, to
avoid conflicts when another package already defines them.
Fix build error on some platforms (issue #555, solution by guo7805 on GitHub)