Reworked the command registration system

Please read the [javadoc](https://github.com/Limeth/Terasology/blob/16965803d4edd128ce5baaa3c35e814de26752f3/engine/src/main/java/org/terasology/logic/console/Command.java).
I think you could support the EntityRef being optional, the same way it was before, just that if it exists it needs to be in front.

Potentially could even allow the param anywhere in the command, since EntityRefs cannot otherwise be used as command params (at least currently - I guess they could be if you allowed the command id to be used)