Python overhaul pt 3: ImageBuf

First, excuse that this pull redundantly contains the material from #671.  Feel free, for the purposes of Python reviewing, to skip imagebuf.{h,cpp}.  The Python bindings are merely built on top of that, and I wanted to submit this pull request even before the ImageBuf changes are committed.

OK, anyway, this is the next batch of long-awaited Python binding fixes.  In this episode, we tackle ImageBuf and ROI.  Fixes, unimplemented methods, docs (finally!), and unit tests.

ImageBuf's in Python are meant primarily for holding images (reading and saving) and running ImageBufAlgo functions on them (coming next to the Python bindings, but not yet).  You can getpixel and setpixel from Python with this patch, that's the slow way and I haven't implemented pixel iterators yet. That's more tricky, and I'm not sure how much people will want to manipulate individual pixels or implement real image ops in Python (versus calling IBA functions, like I said, coming soon).  So I'm tempted to go with this now, and if people turn out to do more image things from Python and are clamoring for fast pixel iterators like we have in C++, we'll add them later.  Ok?