Tile Engine Optimization

- layers will now render to a texture whenever changed. This texture
will be rendered to the screen rather than looping through the tiles
every cycle.
- Only call rendering procedures when the screens actually change. Let
SFML handle every frame inbetween.
- Capped the framerate to the user's refresh rate.
- No longer place tiles that are already placed.