Scenario can now specify variation conditions that are checked to determine which variation of a tile to use. TileSprites now choose a Tile Variation based on the TerrainType of surrounding tiles, and update automatically when an adjacent tile (or the tile itself) is modified. Refactored Game class to only deal with turn-taking functionality, moving all other functionality to Map or MapView. Added UnitSprite class for displaying a Unit on a MapView. Renamed World to MapView. Refactored Player class into separate Player (Game-level) and Faction (Map-level) entities. Created PrimaryDirection class that supports all eight primary directions (including ordinal directions like northeast and southwest), and contains useful functions for dealing with directions.