Lots of fun changes

The game/thing is actually runnable again now! I'm almost to the stage
where I can start work on a level editor.

There's really too many changes to go over in this commit. There's
global positioning, save system crap, render modes, image stuff,
physics, too much to keep track of, so here's the whole mess.
Global Transform Calculations, and pausing!

A transform can be applied to a vector. This should be useful for
calculating collision detection later on.

The code to scale and rotate an image is working (I think!!) I haven't
tested it thoroughly but I can't think of any other ways to break it
that I haven't tried yet.

Added the ability to pause/unpause the game by pressing escape.

Fixed a problem with Err, now it prints exception details correctly.
Small Vector2 changes and render bugfix

Methods in Vector2 that previously could have resulted in division by
zero now have special case logic that uses the infinity double values.

Render previously did not reset the graphics transform after it was done
rendering, and this caused a problem rendering the dev info. This has
been fixed, but I might change it later so that the transform isn't
reset after every time an image is rendered. It already gets reset
before, so doing it twice seems inefficient.
Camera tracking

A Camera holds an AffineTransform that Render uses to move images to the
correct spot before rendering. Sprites can't be transformed yet, but I
plan to implement a position transform in the future.

The camera has 3 booleans to control which elements of its Transform are
applied to the AffineTransform.

I also refactored some image class names.
Rendering camera modes

An object can set a camera mode before calling methods from Render, to
distinguish between things that should be rendered as an overlay and
things that should be rendered in the game world. Also refactored some
names.
Sprite position transformation with the camera

Sprites are now drawn at the correct spot on screen, using
AffineTransform's ability to transform a point.

Render's setSide() method works now, whereas before it would break
everything. Since the image and graphics are encapsulated in Render now,
it can reset those too to avoid the pointer breaking problems that would
otherwise plague that method.