Tile layer: refactor redraw for performance

Pan without manipulating DOM structure. When shifting rows or columns of
the tile matrix due to panning, only shift the `tiles` access array and
not the actual DOM. Tiles are positioned explicitly, so manipulating DOM
order is costly and inconsequential.

Do not show or position tiles for areas outside the stack. Hide them and
let the black `sliceView` div fill the void.

Do not needlessly set alternate text for tiles every redraw. Instead,
only set alternate text when loading images as a flag to indicate
successful loading. This is necessary to work around a Chrome onload
limitation discussed in the comments.

Only show tiles when currently set images are loaded, to prevent
incorrect images being shown (previously mitigated but not eliminated by
setting tiles to the black image when repositioning).

Do not set the source for hidden or shifted tiles. Wait for tiles to be
positioned to prevent setting the source twice. These changes combined
reduce the self profile of `redraw`, `set src` and `set alt` by 90% when
panning over cached stack areas.

Remove `empty256.gif` and `black.gif` because they are not used
elsewhere.