ImageDataWriter overhaul, split graphics components in classes, made drawing much more dynamic (some things are still not configurable, but it is easy to make them so, no magic numbers)

Added "test" for manual testing of ImageDataWriter result
Added UTF-8 coding comments to all files
Added utils.cached_method for cleaner ImageDataWriter
Writing JPEGs with better quality