MakeTiles: impl support for SVG files

SVG files are converted to PNG files at the appropriate resolution
by calling out to Inkscape.exe (must be installed somewhere)
MakeTiles: when generating intermediate images, use a staging directory
MakeTiles: fix bug in SVG->PNG logic
MakeTiles: when converting an SVG file, specify DPI rather than expected width/height

This way we can handle multi-tile SVG source files (e.g. for the larger zones) correctly.
MakeTiles: allow making generated images of an SVG image in a subdirectory
drawing-area: hold in-memory tile images in an object, rather than static variables

This will allow changing tile sizes on a per-window basis.
drawing-area: allow zooming in to 32px tiles
tiles.rc syntax: allow inheriting of another tile's images/attributes

To inherit, just put the name of tile you want to inherit from in parenthesis
at the beginning of the specification.
E.g.

road-1-1     (road) roads/1-1 (road-north)(road-south)

will define a tile named "road-1-1", which first starts with all the images
and properties of tile "road" and then layers on top of that the 'road/1-1'
image, and then sets the 'road-north' and 'road-south' flags.
tiles.rc: use inheritance to define roads with traffic
drawing-area: allow zooming from 8px to 32px, using unique graphics source for each level
drawing-area: allow zooming in and out with keyboard
overlay-map: fix selection rectangle for non-default zoom levels
drawing-area: fix crash bug caused by not loading sprite images
drawing-area: fix where sprites are drawn when zoom level is not 16px
drawing-area: scale sprite images with tile resolution
tile-animation: let tiles.rc determine coal plant's smoke animation
engine: only use PWRBIT flag on zone center tiles
tile animation: use tiles.rc to control termination of coal plant smoke

when the coal plant is killed

Also, this sets up a framework to handle industrial zones in the same way.
tile animation: make industrial zone smoke animations initiated by tiles.rc
tile animation: make nuclear swirl handled same as coal smoke

that is, it starts only when setZonePower() is called for that zone,
and it automatically stops when killZone() is invoked.