Refactor tile into a separate element
Add an __init__.py file to the bundle module so that it can be properly accessed
Don't forget to properly return the leaked item if the underlying queue supports leaking
Add support for tagging download requests and trigger download done signal

Like this, the QtQuick 2 GUI can now tag it's tile download requests and notify
tiles to redraw once the tile is downloaded.
Use asynchronous tile downloads

Previously, tiles were downloaded by the asynchronous tile loading thread.
Unfortunately it looks like there is only one such thread and so even if one tile
download stalls, other downloads that might be quick are also blocked.

This was changed so that if a tile is not found by the image provider a special 1x1
pixel tile is returned and a download request is queued. Meanwhile the tile gets
"notified" by the 1x1 image and disables caching (so that the 1x1 image is not
cached), sets source to "" and connects to the "tile downloaded" signal.
Once the tile is downloaded, it triggers a Python signal which in turn sends a
message to QML. This message triggers a QML signal.
All tiles waiting for download will get notified, but only one of them will match
its tile id - the tile that has been downloaded. It will then enable disconnect
from the signal, enable caching and set it's source as it knows it's tile file
is now available.

Simple, eh ? :)

(If only the QtQuick Image loading API had some page-fault like hooks or a callback
based interface - call this with this id once the image is available - or something
similar.)
Add support for tile handling debug

Tile handling debug can be enabled in Options->Debug and
turns on debug messages to be displayed on the tiles.

Also fix a few things related to the "show unfinished pages"
debugging option.
Show a status message on the tile during download
Fix & improve various GTK GUI related things in mapTiles

* fix weird loading artifacts in overlay mode (turns out the tile combining function was overwriting the loading image surface :) )
* fix a typo in the rotated overlay code (this really needs to be de-duplicated soon)
* make the missing tile handling code in overlay a bit more efficient
* fix loading of tiles into memory by the asynchronous tile download manager
Add support for returning success/error codes for tile downloads
Final QML GUI asynchronous tile download tweaks

Well, that was tedious! :D It all would be so much easier if the QML image loading API was really asynchronous
and/or if it was possible to directly manipulate the image cache. Anyway, it seem to work now. :P
Hopefully it also continues working in the future. :D

What was done:
* tile download requests are sent after the 1x1 "page fault" tile is received, this seem to fix a race condition where
  the 1x1 tile was received after the tile was already downloaded
* don't set the source to "" after page fault - seems to introduce yet another race condition that might also overwrite
  the loaded image - just set opacity to 0.0 instead
* lots and lots of fiddling with the "cache" property
* support for handling tile download errors, dropped download requests and retrying
* increased the request queue as it turns out it was set to be too small
* improved tile handling debugging info