[WIP] Major refactoring

This refactoring was a initiative by @unstoppablecarl.

We decided to make the objects more simpler and define better their scope and responsibilities. Also, we ripped of those constructor parameters and replace them with settings objects – which makes the whole engine more flexible and also cleaner.

We also implemented the rendering area for the renderers, which means the developer can pass an area object that will act as a *camera* and limit the visible area of the tile map.