Added Viewport class. Allowing larger than screen maps and scroll