Moved the actual image decoding to the handler base class, so as long as we can
get access to the pixels of the destination image as a byte pointer the concrete
implementations remain relatively simple, with less code duplication.