svg external bitmap

This patch enables saving bitmaps in svg as external files, so as to reduce output size and rendering costs, and allow easier post-processing of bitmaps.

Currently only DCT images can be saved as jpg, other images are still embedded in svg.

The logic here depends on the logic in the constructor, which is the hidden dependencies. 
Usually I'd try to make each function independent as much as possible, unless it cannot be done with minimum overhead.

It's just easier to maintain this way.