Added I/O abstraction and implementations
The goal is to allow Image and subclasses to read from I/O sources other than files. Initial implementations should include file and memory, but others are possible.
The design will follow the semantics of the FILE* functions, making the change over easy. It would have been nice to use basic_iostream and friends, but instantiating the iostreams templates for type 'byte' proved to be a big hassle (and buggy under GCC 3.3.x).