Obstacle implementation

Cleaned up repo, implemented obstacles, and laid the underlying
framework for per-level special conditions.