Make a command type and refactor the main command loop out
Further major refactisations of commands
Rename Command -> CommandType
Give Commands their own structure, and update the protocol from the changes made by @46bit