Added Scroll Handling to Movement Methods of Char Class

Now when the Char sprite gets within one half cell of the edge of the screen,
the Char sprite stops moving and the level moves in the opposite direction,
giving the illusion of continued movement.  This allows for levels larger than
the screen size.
Added Randomly Generated Start Position

Start position is now randomly generated upon level creation.  A start
side can be provided, in which case the start position is somewhere
random on that side, or else one is chosen randomly.

Currently, the start position is generated correctly, and the Char sprite's
start position is correctly based on the start position.  The camera
jumps to the character, but sometimes positions the camera such that area
outside of the level is visible.

Committing to back up before changing camera movement code.
Fixed Camera Issue on Start
Added Finish Cells

Finish cells are randomly generated and appear on any outside wall
except the one the start cell is on. If the finish cell is on a wall
perpendicular to the one that the start cell is on, it is generated
on the far half of the wall.

The wall, start, and finish sprites are now added to seperate groups
for rendering and collision.

When the Char sprite is within the finish sprite, a new level is
generated.