Rewrites map rendering and tile generation. While it is slightly slower
now, it has a greatly reduced memory footprint. Previously, we would
allocate N images, big enough to contain the entire rendered world at
the current zoom level. Where N is the number of overlays being
generated. The world was rendered to them, in full. After which, the
image would be sliced up into map tiles. This method works, but eats
a monstrous amount of memory.

The way it works now, is we allocate N images, big enough to
contain exactly 1 full region and tiles are generated during this
phase. The workflow is as follows:

    allocate len(overlays) images,
       sized to fit exactly 1 region at current zoom level.

    for each region in world:
        for each overlay N:
            render region to overlay N:
            split image up into Y tiles.
            for each tile:
                check if it has been saved before.
                if so, ignore it.
                else, save it to disk.
Fixes the template generator, in response to the renderer changes.
This also entails some fixes to the client side javascript.