Implement proper support for different types of bitmaps (non-premultiplied etc).

- Implements "possible fix 3" of issue #32. Not closed yet, as some issues remain.
- Store premul/linear info on Bitmaps and Surfaces
- Set blending function whenever drawing a Surface (this should cause other minor rendering issues but it solves the premultiplication problem)
- Implement write/read support for non-standard .premul.png format (used for cached SVGs)
- Use libpng (rather than Cairo toy API) for writing cache PNGs
- Replace struct Image (only used for screenshots) with Bitmap, which was functionally (nearly) equivalent anyway
- Clean up writePNG (+ possibly bugfix with stride calculation, or b0rked screenshot functionality now)
- Add debug printouts for image loading/writing code
- Needs a major testing...
- Some graphics now appear painfully bright, theming changes welcome!