a) moved the responsibility for image rendering to the image loaders
b) refactored drawImage() such that the image rendering code could be re-used by different image loaders
c) Updated all example image loaders to support the new image rendering paradigm
d) added invalidateImageId() function to support invalidating pixel data of already loaded images (for dynamic pixel use cases)