Make sure custom views emit selectionChanged and currentChanged signals.

When a QAbstractItemModel calls reset(), selection-models in views using
that QAbstractItemModel don't emit the selectionChanged or currentChanged
signal.  There were numerous places where this was compensated for by calling
methods to synch the UI when resetting tile, category and furniture lists.

Methods were added that ensure the selectionModel() of a view gets to emit
its signals.
Tile properties dialog loads tileset images in the background.
Late bumping of BuildingTiles.txt version number.
Adding tilesets in TileMetaInfoDialog uses AddTilesetsDialog.

Instead of showing the system's get-files-to-open dialog, use our AddTilesetsDialog.
This will show only the tileset images that haven't been added yet.

AddTilesetsDialog gained a button for browsing to another directory.
Originally, it was only used by TileDefDialog which only allowed tilesets
in a .tiles file's directory.
Added TemplatesFile class to handle reading/writing BuildingTemplates.txt.

The old upgradeTxt() and mergeTxt() methods were bad because they both
manipulated the SimpleFile data directly.
Removed unused code caused by the last commit.

The last commit would have been a big mess if this code was removed earlier.
SimpleFile does a better job dealing with parsing errors.

Also, check for key-value lines before checking for opening or closing
braces, in case a key-value has braces in it.
Added a mechanism to defer mapImageChanged signals related to worker threads.

When deferral is enabled and a worker thread finishes loading an image, the
affected MapImage is added to a list.  When deferral is later disabled, the
mapImageChanged signal is emitted for all the MapImages in the list.  It isn't
100% clear whether this prevents any problems.
Added import/export buttons to the templates dialog.

This is the main reason I added the TemplatesFile class a few commits ago.
Update CMakeLists.txt.
Added dist/make-dist.tcl.