ImageAlgo : Refactor iteration for `parallelGatherTiles()`
ImageAlgo : Refactor iteration for `parallelGatherTiles()`

- Use boost::iterator_facade to make TileIterator more like a standard iterator.
- Don't duplicate the origin iteration logic in TileChannelInputIterator. Use an internal TileInputIterator instead.
- Make TileIterator output tile origins instead of tile indices. This encapsulates all the
  logic for tile origins in one place, instead of requiring all the other components to do
  additional work to get back to the tile origin they need.
- Make TileChannelInputIterator return channel names directly, instead of channel indices
  which then need a bunch more bookkeeping in the other components.
- Remove unnecessary usages of boost::tuple

johnhaddon/gaffer,ivanimanishi/gaffer,boberfly/gaffer,GafferHQ/gaffer,appleseedhq/gaffer,andrewkaufman/gaffer,lucienfostier/gaffer,ImageEngine/gaffer,appleseedhq/gaffer,GafferHQ/gaffer,boberfly/gaffer,GafferHQ/gaffer,ivanimanishi/gaffer,johnhaddon/gaffer,hradec/gaffer,ivanimanishi/gaffer,johnhaddon/gaffer,GafferHQ/gaffer,andrewkaufman/gaffer,boberfly/gaffer,lucienfostier/gaffer,GafferHQ/gaffer,ImageEngine/gaffer,johnhaddon/gaffer,andrewkaufman/gaffer,johnhaddon/gaffer,boberfly/gaffer,lucienfostier/gaffer,ImageEngine/gaffer,lucienfostier/gaffer,hradec/gaffer,ImageEngine/gaffer,andrewkaufman/gaffer,andrewkaufman/gaffer,appleseedhq/gaffer,appleseedhq/gaffer,hradec/gaffer,hradec/gaffer,hradec/gaffer,ivanimanishi/gaffer