Check if redraw timing is enabled on startup and add timestamp
Don't do double redraws

For some reason the expose function was chaining the event
which caused another redraw immediately following the first one.
With the chaining removed, dragging the map feels a lot more smooth
and it should space quite some cycles/power when just drawing the menus.
Backport Queue from Python 2.7

The Python 2.5 Queue seems to have an incompatible subclassing
interface and can't be used by the backported priority queue.
Improve pool shutdown possibilities
Add a function for creating a connection pool

The function can be used to create a urllib3 provided
connection pool that makes it possible to reuse open connections.
Add a batch pool implementation and check & download batch pools
Big batch tile download improvements

* use proper thread pools for both size check and download
* refactor common code for both
* fix the horrible cyclic-redraw-with-sleep screen refresh behavior
- as a result the batch download screen is no longer lags and reacts
  almost immediately to input
* only show buttons when relevant
- the edit button should only be present if no batch is running
- we don't need the start button if the batch download is done
* only one batch can be running at the same time - either check or download
* use pretty data amount units
* move the button state & status text logic out of the drawing function
* general code cleanup and refactoring
- should make the batch tile download functionality more usable from other GUIs
  than the GTK one (Qt 5 GUI)