Screen clipping, basic caching

Only tiles that fit on the screen are drawn, the rest is cached for
later