Tile layer: eliminate tile flicker on slice change

(commit message and partial authorship by @aschampion)

Based on a cherry-pick of
perlman/CATMAID@7b47d53c4920da0e21b20d7d7e94066f85ae0856

Eliminate flickering when changing slices caused by images loading onto
tiles as each request is completed. Instead, preload images into a
hidden tile buffer, then change the source of tile images once all
images have been loaded by the buffer. See patch submission in
acardona/CATMAID#682.
Tile layer: set a buffered loading timeout

For slow image loading, set a timeout so that after 3 seconds any loaded
images are displayed and further images will display as they load,
rather than displaying them all at once.