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).
That is fine, but that doesn't require you to catch throwable. Either you know an exception is going to be thrown, or it is a runtime exception.

I realise the old code also caught throwable, but this is a lesson I've learnt since then.