ImageBufAlgo API overhaul for uniformity.

Make all the ImageBufAlgo functions conform to the new conventions:
* Take ROI rather than xbegin/xend (or in some cases not taking any
  region specification).
* Use the DISPATCH macros to make work with all types where practical,
  common types otherwise, and document which types it works with.
* Use Iterator, not getpixel/setpixel.
* Multithread when operating on enough pixels.
* Make 3-D where applicable.
* More care in uniformly handling uninitialized destination image or
  undefined ROI.
* More clear documentation overall.

In this commit, we tackle zero, fill, channels, crop, paste.
More than enough to review, save the rest for later.