Major physics refactoring

In this commit there should be no significant game play or code behaviour changes.

Intention of this refactoring:
Allow for multiple, different physics implementations to exist and be used.

General method:
Create a layer of interfaces between the physics classes and the Terasology code.

Detailed changes:
The new interface for the physics can be accessed from the PhysicsEngine interface.
This interface returns the CharacterCollider, RigidBody and SweepCallback interfaces.

The new physics interface is linked to the event system by the PhysicsSystem class.
The updating of the physics has also be relocated to the PhysicsSystem class.

Since the BulletCharacterMover class was very physics dependant, it has been refactored and renamed to KinematicCharacterMover. This name describes it behaviour better and the refactoring done by this commit make the class independent of the physics implementation.
To allow this independence, some of the low level character movement calculations have been moved to the CharacterCollider and SweepCallback interfaces.

All classes using the old BulletPhysics class have been refactored to use the PhysicsEngine interface.

Previously a TODO existed for merging the old PhysicsSystem and BulletPhysics classes. Instead the PhysicsSystem is now handling all events, while the BulletPhysics class is made into an implementation of the PhysicsEngine class.

Besides the major refactoring, documentation has been added in various places and various minor TODO's have been implemented.
Removed invalid comment of something that was changed earlier.
Removed double setting of physics location of the player.
Removed an unused import that should not be used after the physics refactoring.
Fix for StorageManagerTest when run in isolation.
Merge branch 'physicsRefactoring' of https://github.com/Xanhou/Terasology.git into multiplayer
Various checkstyle fixes, copyright declaration fixes, and tweaks to comments.
Removed getOrientation() methods from CharacterCollider (CharacterColliders are always upright capsules, and thus don't have orientation).
Initial ground work for module versioning:
 * Modules now have versions
 * Added Version class for working with semantic versions
 * Dependencies have been extended to have min and max versions.
 * None of this is actually used for anything yet, the latest version of a module is always used.
Linked module version into the build process, so the final jars are named with the version.
Excluded 'engine' module from module dependency linking in the gradle build process.
Merge branch 'multiplayer-versioning' into multiplayer

Conflicts:
	src/main/java/org/terasology/engine/AbstractBaseUri.java
Snapshot of a roughly working JSON style applier thingy
And another step done
Add style states
Make UIButton compatible with new UI system
Adapt GUI system to recent asset manager changes by Immortius
Implement UIWindow#reload
Add Tuple2 class
Refactor method to add a unit-test asset source directory from prefabtest
Add layout definition test
applyTo needs be invoked after setModal and maximize

Otherwise, it would not be possible to change the size or
the "modality" of a window from within the style, because those
settings would get overwritten by the subsequent calls to
setModal and maximize.
Add all elements from the UIMenuMain to the main menu layout def
Add WIP UIController support (events currently fail to be invoked though)