Add camera.

Currently implementation is terrible. Keeps track of a global
offset that it applies to everything that gets SDL_RenderCopy'd.
This causes all sorts of wonderful floating point rounding
errors which result in "breaks" in walls that should be solid. This
is due to some kind of limitation or weirdness with how the
SDL_Renderer is implemented, which doesn't allow it to draw
anything outside of the 640x480 window. Which means that
even if glTranslatef is used, everything outside of the initial
640x480 pixels will show up as the draw color of the
renderer. Blah! But at least the camera works.