Added the Tileset and Tile classes.
Reversed the way apply() works.
Made the Surface class pure-virtual.
Removed get_* prefixes from observer functions.
Added the Map class.
Added the MapData class.
Added the overworld scene.
Added a function to check if an area is on screen in Surface.
Checked if surfaces are on screen before blitting.
Cleared the screen before drawing.
Deleted an unneeded comment.
Encapsulated getting the current scene in the SceneManager.
Added the overworld scene after the splash screen.
Pushed scene raw pointers instead of smart pointer for simplicity.
Modified the Scene's lifetime functions.
Added the camera to adjust the view.