Basic collision detection, LayeredLevel

In this commit, I am proud to announce basic collision detection and
another lovely level type, a layered level!

First of all, collision detection:
This is done by a class called "LevelPhysics" which is intended to
handle all the physics of a level, as the name suggests.
It does a few checks to ensure that both "ICollidable" objects, which is
the interface implemented by every class that shall be able to collide,
are IN THEORY able to collide with each other.
Then, if the checks are successful, it tests whether they have an
intersection region.
This can results in entities being unable to move further when hitting a
wall, or even objects breaking when hit by a bullet - basically all the
stuff that has to do with collisions.

Now, the layered level type:
This is basically a level that consists of multiple layers which move at
different speed when the offset changes, which shall create the illusion
of depth. Layers are represented by the class called "Layer" of course.
They are able to have their own entities which also move with them when
the player entity changes its position.

Furthermore, some code was improved (e.g. added "@Override" where is was
missing) and "TileBasedLevel" was renamed to "TiledLevel".