Fixes for various compiler warnings.
MapComposite::addMap() calls ensureMaxLevels() on all ancestors.

Noticed that Lots loaded into adjacent maps weren't updating the maxlevel
of the root map.
CompositeLayerGroup: allow tool tiles in multiple layers.

CompositeLayerGroup used to allow tool tiles in one layer only.
Fixed INSTALL target with INSTALL_ONLY_BUILD=1 in zlib.pro.
Added LuaTileTool.

LuaToolDialog allows the user to choose a Lua script that defines the behavior
of the tool.  New tools can be defined by creating a Lua script and adding
and entry to LuaTools.txt.
Added cursor item to LuaTileTool, tool-parking-stall.lua.
BuildingEd: re-added reportMissingTilesets().
Keep separate app/user Curbs.txt/Edges.txt/Fences.txt/LuaTools.txt.

I used to copy these files from the application directory to the user's
~/.TileZed directory if they didn't exist there.  Problem with that was:
how to apply application updates to those files to the user's copy?
Now both the user's file (if one exists) and the application's file are loaded.
This way the user can create their own curbs/edges/fences/tools without fear
of losing them when updating TileZed, and updates made to TileZed are used
as well.
BuildingFloor::LayoutToSquares() memory-related change.

The Square() constructor allocates a few QVectors, so avoid it when possible.

Another inefficiency is the use of QVector's operator[], which does a deep
copy.  Every place that is reading a QVector members would do better using
QVector::at() instead of operator[].
Added an icon for LuaTileTool.
Misc code cleanup.
Fixed broken signals/slots with LuaTileTool.

AbstractTool also makes connections with MapDocument, shouldn't have disconnected
those.
Added Lua implementation of FenceTool.

WIP because there is no way to choose different fence tiles.
Replaced white background in sort-by-name.png with transparency.
Commit correct tiles in tool-mailbox-rural.lua.
Fix for map orientation in tool-four-directions.lua.
BuildingEd: select all/none works on room selection when PencilTool/SelectMoveRoomsTool current().
BuildingEd: Stop the current tool changing after editing rooms.
Added UI options to LuaTileTool/LuaToolDialog.

Tool scripts may define 2 functions, options() and setOption().
options() returns a table defining UI elements to be added to LuaToolDialog.
setOption() is used to inform a tool of the new value of an option.
The current value of each option is held by QSettings.
Enable assertion checking in Lua C library in debug mode.