Surface fixes and Gravity

Gravity is now handled by the PhysicsEngine, PhysicsObjects now have a
boolean property to track if they've collided this frame or are in free
fall. Surfaces now set the free fall boolean based on the collision
direction and direction of gravity, which can be up, down, left, or
right.

Hang ups when walking from surface to surface are fixed.