Made all building tools derive from BaseTool.

The tile-mode tools use to have their own base class and tool manager
separate from the object-mode tools.
Moved tracking which object the mouse is over to BaseFloorEditor.

As a test this used to be in SelectMoveObjectTool.  Now WallTool and RoofTool
also have change the appearance of the object the mouse is over.
Renamed 2 WallTool member variables.
Fixed issues with resizing and rotating buildings.

When a building is resized, GraphicsObjectItems are updated *before* the
BuildingMap::mMap has been resized to match the building size.  When the
map is finally resized, we must update the GraphicsObjectItems again.
Fixed GraphicsFloorItem image not being updated when rooms change.
GraphicsRoofHandleItem::shape() added for proper mouse picking.
Use the correct bounds of wall objects when updating wall handles.
Ensure BuildingMap layer-groups are marked 'needs synch' when editing tiles.
Massive rewrite of the tile-mode switching code.

BuildingTileModeWidget was removed.  The layers and tilesets docks that
were a part of BuildingTileModeWidget were moved to their own classes.
The tile-mode toolbar was moved to its own class, TileModeToolBar.

TileModeFurnitureDock was renamed BuildingFurnitureDock.
Building object tools give a live preview of the result in isometric view.

When creating or resizing objects, the way the building will look is updated
in real time.  Most of the hacks happen in BuildingMap::setCursorObject().