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