Add load, and some small fixes to save to match.

They are ugly at the moment, but I tested a few times and they work.
Put resource loading in a separate function.
Add opensavefile.

It simplifies a few repeated lines in save and load.
Temporarily use s to save and z to restore—for now.

I couldn't rebase this commit out, so we get to see it added then deleted later on.
Zero the game structs each time gamenew or load is called.
Save the game and player in the same file.
Avoid an unnecessary zoneput.
Rename save and load to gamesave and gameload.

This is more consistent with the rest of the function names.
Save and load the player's current action.
Store the player's direction in an enum instead of a pointer.

This will be necessary for saving the player's direction. We cannot
save a pointer, and we cannot use pointer equality to compute the
player's direction since we copy the Player in some places (the
p->anim pointer will point to the p->leftas or p->rightas field of the
original, not the copy). Additionally, this is more consistent with
how we handle p->act.
Save and load the player's direction.
Make the camera setting per-screen.

When a new screen is pushed, the camera is saved and reset. When a
screen is popped, the camera is restored to the value just before the
corresponding push.
Save and restore the camera position.
Save when accessing a statup envorinment, and add restore as an option to the title screen.

Fixes #3.