Changes to save system and image rendering

The save system isn't ready for use yet, and won't be until the future
large overhauls of the entity and image system. I just changed some
stuff around so that the code compiles and isn't quite as confusing (I
hope).

The image rendering system is being redesigned to be more efficient.
There is a SpriteSheet that is supposed to hold all the images, while
entities hold onto what are essentially pointers with extra data like
position and a visibility flag.
Rendering redesign

I am redesigning/refactoring the render process so that it makes more
sense. The actual drawing happens on Screen, which only ever uses
screen-space coordinates. But  I don't want ingame objects to have to
figure out how to draw themselves, so I have Render, which takes
world-space coords and converts them to screen-space coords using
information from the camera. This way, objects never have to know
anything about screen-space, and only exist in world-space. All
conversion between coordinate systems happens in the Render class.
Objects are still free to access the Screen directly, though, to allow
easy addition of things like UI elements.
Rendering redesign - rotation support

Adds support for image and camera rotation using the new rendering
pipeline. This update uses a Transform to represent the camera, so
future updates could allow for any Transform to function as a camera.
The only thing that will make it a camera is my say-so, along with any
camera-specific motion scripting. Scaling is next on the list, and then
I can move on to some physics.

Also updated the Keyboard class to be able to support the entire
keyboard. The keys array now holds as many values as there are keys.
Adding Behaviors

A behavior is a specific action that occurs over many entities at once.
Instead of putting the action in tick methods among all the other things
that get stuck in there, I used a Behavior class. This allows Components
to be free of action-related parts, and allows an action to happen over
every entity without fear of being interrupted by other actions changing
variables around. A prime example is for physics. First the gravity
Behavior will analyze the entities and apply gravity to them, then any
other similar forces will act, and then at the end of the tick cycle the
collision Behavior will analyze all the entities and deal with
collisions.

If multiple Behaviors do not affect entities in the same way, this could
even allow for multithreading.

Also, I might want to rename Behaviors to Systems.