Refactored ImgOpener/Saver

* Added an ImgOptions class which wraps a variety of configuration
  choices for ImgOpener (which has been reorganized to use these
  options).
* Added constructors to ImgSaver so it can create its own Context if one
  is not provided.
* Extracted static methods to a new IO utility class.