view: move tiles cache into a separate singleton(ish) object
tiles: add 16x16 tiles to project resources
rename activeScroller to activeMotion

to account for the next type of motion which is not a scroll
view: enforce factor-of-2 zoom levels, and animate intervening factors

minimum zoom is currently 0.5x at 8px tiles (i.e. 4px)
maximum zoom is currently 2.0x at 32px tiles (i.e. 64px)
view: round canvas translation to integer

this eliminates some visual artifacts
main activity: save/load city on stop/start
view: update scroll bounds when tile size changes