Use string not char* for NodeFactory

Char* can be unsafe. Prefer the string wrapper class.
Add Typedefs header

Typedefs include typedefs for types that don't neatly fit into a
particular class scope. The TileLayers and ObjectLayers typedefs will be
passed around among Overworld, TileMap, and future TMXParser.
Add TMXParser class

Refactor Overworld code by extracting TMX parsing and placing into
specialized TMXParser class. The motivation for this is to adhere to the
Single Responsibility Principle by not muddying up the roles of the
classes. Originally, Overworld did the TMX file parsing and constructed
the vertices for TileMap to hold. Both these tasks fall outside the
intended purpose of the Overworld class, which is to manage the
lower-level components of an overworld, preferring delegation to internal
handling.

This commit has all parsing logic handled by TMXParser. TMXParser does not
construct vertices for TileMap, further separating responsibilities
appropriately. It instead returns the class-agnostic TileLayers type that
any class can handle as it sees fit. Overworld uses TMXParser to get a
TileLayers object, which it then passes to TileMap for it to construct map
vertices internally. This way TileMap can govern how it handles the tile
data passed to it.
Remove commented out lines and add newline

Do this for TileMap header.
Render TileMap by layer

Set layer using setRenderLayer() method. If no layer registered for that
key, then doesn't render anything. Draw() method draws only that layer.

Not sure if good long-term solution. Overworld will adopt similar strategy
with scene graphs, but for good hierarchical consistency it is appears
better to have multiple single-layer TileMap instances in Overworld than
to have one TileMap instance with many layers. Tile and object layer
rendering can then be centralized within the Overworld class.
Centralize layer logic in Overworld

Instead of Overworld containing one instance of TileMap that handles
several layers, Overworld contains an array of TileMap unique pointers
that represent the layers of the world. This keeps the implementation of
TileMap much simpler and centralizes the layer concept. Only Overworld has
any concept of a layer: SceneNode and TileMap are self-contained entities.

Overworld's scene graph is also organized into layers. Although there is
only one scene graph proper, the layer array points to specific nodes in
the graph that designate a layer. The layers are rendered by simply
iterating through the layer array.