Use a quad-tree to manage images in ImageLayerView

This speeds up drawing performance
with lots of features or tiles on the map.
Redraw only dirty rectangles when view changes
Convert ImageLayerView into a scrollable control

Previously the ImageLayerView was one large control
contained in a scrollable panel.
This performed badly with large maps,
presumably because it was trying to double buffer
the whole control, which was extremely large.
Fix crash when trying to drag a feature outside map bounds
Don't display canvas when there's no map
Handle IOExceptions when opening maps
Handle IOExceptions when saving maps
Fix silently failing to open a map with an empty name
Allow maps to be saved with other common TA extensions
Adjust GenerateAssemblyInfo.py to cope with dirty tags
Add dynamic version information to the about box
Make release script compress zip files