Use QUrl::fromLocalFile() in a couple places instead of "file:///".
Use QtSingleApplication to open files in an already-running instance.

Mash wanted a way of opening maps in TileZed from WorldEd.  I found that opening
files using QDesktopServices (or double-clicking a .tmx file in Explorer)
would start a new TileZed instance each time.  So I googled around and settled
on using QtSingleApplication.

When a new instance of TileZed starts, if any files were passed on the command
line, they are passed to another running instance (if any).  If no files are
passed on the command line, the new instance starts up, allowing multiple
instances of TileZed to run.  I did that because the IndieStone peeps sometimes
run 2 copies of TileZed.
MapManager creates RoomDef map objects after loading a building.

In WorldEd, LotFilesManager needs the RoomDef objects for maps that are
created from building .tbx files.
BuildingEd exported .tmx files have # in the name of RoomDef objects.

WorldEd will merge adjacent RoomDef objects with # in the name into a single
room when creating .lotheader files.
Fixed a crash when reloading a map.

MapComposite::recreate() calls addMap() which calls ensureMaxLevels() which
generates the layerGroupAdded() signal.  There was a bug with mMaxLevel not
being reset to zero in recreate() which caused ensureMaxLevels() to add null
entries to mLayerGroups, crashing out in CellScene::handlePendingUpdates().
Fixed mini-map-related crash when undoing changes.

processChanges() loops over the list of map changes twice. If a lot was
removed during the first loop, any LotAdded/LotUpdated changes handled in
the second loop would segfault because the lot was already deleted.